puoi aiutarmi a capire perché questo codice causa una voce duplicata (IntegrityError)?Django - get_or_create non funziona
Sono su Django 1.2.
(row, is_new) = MyModel.objects.get_or_create(field1=1)
row.other_field = 2
row.save()
Ho un vincolo univoco sul campo1. Se c'è una riga dove field1 = 1, tutto funziona bene, Django fa un "get".
Se non c'è una riga dove campo1 = 1, sembra che Django stia creando quella riga che è ok. Ma perché non mi permette di salvarlo?
Aggiornamento:
Se serve, qui è 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'
campo1 è una chiave esterna a un'altra tabella. Ma non ho fatto una modella in Django per quel tavolo, quindi non dico a Django che è una chiave straniera.
non MyModel hanno campo straniera? Puoi pubblicare il codice di MyModel? –
[Questa domanda simile] (http://stackoverflow.com/questions/6974463/django-get-or-create-raises-duplicate-entry-with-together-unique) potrebbe aiutarti. – agf
@agf. Non capisco quale sia stata la risoluzione in questa domanda o come il problema sia giustificato. Sembra un bug per me. Penso che mi arrenderò su get_or_create e fare un lavoro in giro :-( – Greg