Angenommen, ich habe dieses Modell:Django get_or_create, wie zu begehen sagen = 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)
Wenn ich tun:
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
Ich will nicht added_by
Feld in Filterkriterien aufzunehmen. Ich möchte später das Feld added_by
speichern. So etwas wie commit=False
Django zu sagen, dass ich Pläne, um weitere Felder hinzufügen später:
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
Ich weiß, es gibt Alternativen z.B. Ich kann ObjectDoesNotExist
verwenden. Aber gibt es eine Möglichkeit, die gewünschte Funktionalität in get_or_create
zu erreichen?
Der Grund, warum ich das Feld added_by
ausschließen möchte, ist, weil möglicherweise ein anderer Benutzer bereits ein anderes Benutzerprofil hinzugefügt hat.
zu begehen Hinzufügen = False gut ist get_or_create Idee. Vielleicht möchten Sie den Vorschlag auf der Mailingliste django-developers veröffentlichen. – s29