Supponiamo che io ho questo modello:Django get_or_create, come dire commettere = False
class SocialGroupMembers(models.Model):
social_group = models.ForeignKey(SocialGroup, related_name="members")
profile = models.ForeignKey(Profile)
date_joined = models.DateTimeField(auto_now_add=True)
added_by = models.ForeignKey(User)
approved = models.BooleanField(default=False)
Se lo faccio:
obj, created = SocialGroupMembers.objects.get_or_create(
social_group=social_group, profile=profile)
# this will give integrity error that added_by can not be null
Non voglio includere added_by
campo in criteri di filtro. Voglio salvare il campo added_by
in seguito. Qualcosa di simile commit=False
dire Django che ho intenzione di aggiungere più campi tardi:
obj, created = SocialGroupMembers.objects.get_or_create(commit=False,
social_group=social_group, profile=profile)
if created:
obj.added_by = request.user
obj.save()
else:
#do something
So che ci sono alternative per esempio Posso usare ObjectDoesNotExist
. Ma esiste un modo per ottenere la funzionalità desiderata in get_or_create
?
Il motivo per cui voglio escludere il campo added_by
è perché potrebbe essere un altro utente ha già aggiunto un altro profilo utente.
Aggiunta impegnano = False per get_or_create è una buona idea. Forse ti piacerebbe fluttuare il suggerimento sulla mailing list di django-developers. – s29