Mi piacerebbe utilizzare name__iexact
con get_or_create per evitare la duplicazione sui campi immessi dall'utente, ove possibile.Django get_or_create non riesce a impostare il campo quando viene utilizzato con iexact
Il modello del mio provider ha un campo nome che uso in get_or_create.
La ricerca funziona bene, ma quando si crea un'istanza per la prima volta come nell'esempio P1/Legname di seguito (il nome
non riesce:
>>> p1, c1 = Provider.objects.get_or_create(name__iexact="Timber")
>>> p1, c1
(<Provider: >, True)
>>> p1.name
u''
funziona come previsto qui:
>>> p2, c2 = Provider.objects.get_or_create(name="Cedar")
>>> p2.name, c2
('Cedar', True)
>>> p3, c3 = Provider.objects.get_or_create(name__iexact="Cedar")
>>> p3, c3
(<Provider: Cedar>, False)
>>> Provider.objects.get_or_create(name__iexact="cedar")
(<Provider: Cedar>, False)
È __iexact
incompatibile con la parte di creazione di get_or_create
, è questo comportamento previsto (e perché) oppure ho eseguito un errore di Django?
Aha. Quest'ultima frase è la chiave. Eccolo nei documenti: https://docs.djangoproject.com/en/1.7/ref/models/querysets/#get-or-create 'per k, v in kwargs.items() se '__' non è in k' – owenfi