Django: get_or_create Повышает дублируемую запись вместе with_unique
пример модели
class Example(Stat):
numeric = models.IntegerField(...)
date = models.DateField( auto_now_add=True,...) #auto_now_add=True was the problem
class Meta:
unique_together = ('numeric','date')
)
Если 72 и '2011-08-07' уже сохранены
Example.object.get_or_create(numeric=72,date='2011-08-07')
вызывает
django.db.utils.IntegrityError: (1062, "Duplicate entry '72-2011-08-07'
возникает вопрос, почему get_or_create
вызывает IntegrityError
, то есть идею использования
get_or_create
.
Не уверен, что это ошибка, я открыл билет https://code.djangoproject.com/ticket/16587
Ответы
Ответ 1
Кажется, ваша проблема заключается в том, что в вашем get_or_create
больше столбцов, которые вы не включаете, см. этот поток в списке рассылки Django.
Вам нужно использовать параметр defaults
get_or_create
, как описано в docs, или указать значения для всех столбцов, для get_or_create
- правильно соответствовать.