У меня есть модель PlacedOrder
, на которую ссылаются другие модели, использующие OneToOneField
и ForeignKey
. Поэтому я использую StackedTabularInline
для рендеринга на моей PlacedOrderAdmin
модели.
Странное поведение в том, что когда я запускаю свое приложение django, я могу без проблем создать новый объект PlacedOrder
, но после этого, когда я пытаюсь создать другой объект, поля в строках уже заполнены содержимым объекта что я только что создал, и я не могу создать новый объект, независимо от того, что я пытаюсь, он постоянно показывает мне ошибку «Пожалуйста, исправьте ошибки ниже.»
Только поля, принадлежащие строковым значениям, поля из модели PlacedOrder
являются «чистыми». После перезапуска django я вижу все созданные объекты, и их данные кажутся правильными.
часть моделей:
class PlacedOrder(models.Model):
id = models.UUIDField(
primary_key=True,
default=uuid.uuid4(),
editable=False
)
...
total = models.DecimalField(
_('total'),
max_digits=8,
decimal_places=2
)
class OrderStatus(models.Model):
placed_order = models.OneToOneField(
PlacedOrder,
on_delete=models.CASCADE
)
status = models.CharField(
_('status'),
choices=STATUS_CHOICES,
max_length=30,
)
Вот одна из строчек:
class OrderStatusInline(nested_admin.NestedTabularInline):
model = app_models.OrderStatus
и Заказ
@admin.register(app_models.PlacedOrder)
class OrderAdmin(nested_admin.NestedModelAdmin):
inlines = (OrderStatusInline, OrderPaymentInline, OrderDeliveryInline, SelectedProductInline, )
Исправлено
Итак, я обнаружил, что проблема не имеет ничего общего с тем, что я написал здесь, это было то, как я объявил id
внутри PlacedOrder
.
На моей исходной модели по умолчанию было установлено значение uuid.uuid4()
, но это создавало все проблемы, как только я изменил его на uuid.uuid4
, все было в порядке.