Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion psqlextra/compiler.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from django.core.exceptions import SuspiciousOperation
from django.db.models import Model
from django.db.models.fields.related import RelatedField
from django.db.models.sql.compiler import SQLInsertCompiler, SQLUpdateCompiler

from psqlextra.expressions import HStoreValue
Expand Down Expand Up @@ -305,6 +307,10 @@ def _format_field_value(self, field_name) -> str:
field_name = self._normalize_field_name(field_name)
field = self._get_model_field(field_name)

value = getattr(self.query.objs[0], field.attname)
if isinstance(field, RelatedField) and isinstance(value, Model):
value = value.pk

return SQLInsertCompiler.prepare_value(
self,
field,
Expand All @@ -313,7 +319,7 @@ def _format_field_value(self, field_name) -> str:
# value. We rely on pre_save having already been done by the
# underlying compiler so that things like FileField have already had
# the opportunity to save out their data.
getattr(self.query.objs[0], field.attname),
value,
)

def _normalize_field_name(self, field_name) -> str:
Expand Down