Django: get_or_create Вызывает повторяющуюся запись с Together_unique - PullRequest
28 голосов
/ 07 августа 2011

пример модели

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 Ответ

20 голосов
/ 08 августа 2011

Похоже, ваша проблема в том, что в вашем get_or_create больше столбцов, которые вы не включили, см., Например, эту ветку в списке рассылки Django.

Вам необходимо использоватьпараметр defaults для get_or_create, как описано в документах , или указать значения для всех столбцов, чтобы get_or_create совпадал правильно.

...