możesz mi pomóc zrozumieć, dlaczego ten kod powoduje duplikat wpisu (IntegrityError)?Django - get_or_create nie działa
Jestem na Django 1.2.
(row, is_new) = MyModel.objects.get_or_create(field1=1)
row.other_field = 2
row.save()
Mam unikalne ograniczenie na pole1. Jeśli istnieje wiersz gdzie field1 = 1, wszystko działa poprawnie, Django robi "get".
Jeśli nie ma wiersza, gdzie pole1 = 1, wygląda na to, że Django tworzy ten wiersz, który jest w porządku. Ale dlaczego nie pozwolę mi go zapisać?
Aktualizacja:
Jeśli to pomoże, oto MyModel:
class MyModel(models.Model):
id = models.BigIntegerField(primary_key=True)
field1 = models.BigIntegerField(unique=True)
other_field = models.CharField(max_length=765)
class Meta:
db_table = u'project_crosses_suppl_FO'
pole1 jest klucz obcy do innej tabeli. Ale nie zrobiłem modelu w Django dla tego stołu, więc nie mówiłem Django, że jest to klucz obcy.
Does MyModel mieć pole obcego? Czy możesz opublikować kod MyModel? –
[To podobne pytanie] (http://stackoverflow.com/questions/6974463/django-get-or-create-raises-duplicate-entry-with-together-unique) może ci pomóc. – agf
@agf. Nie rozumiem, jaka była rezolucja w tym pytaniu, ani jak problem jest uzasadniony. To brzmi jak błąd dla mnie. Myślę, że zrezygnuję z get_or_create i wykonam pracę :-( – Greg