このモデルがあるとします:
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)
私が行った場合:
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
added_by
フィルター基準にフィールドを含めたくありません。added_by
後でフィールドを保存したい。commit=False
後でフィールドを追加する計画があることを Django に伝えるようなもの:
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
代替手段があることは知っています。たとえば、使用できますObjectDoesNotExist
。しかし、で目的の機能を実現する方法はありますget_or_create
か?
このフィールドを除外する理由added_by
は、別のユーザーが別のユーザー プロファイルを既に追加している可能性があるためです。