Django的get_or_create和ManytoManyField

8 投票
1 回答
7456 浏览
提问于 2025-04-17 21:48

我之前使用的是外键。

模型

class Phone_request_list(models.Model):
    who = models.IntegerField(null=True)
    whose = models.ForeignKey(User)

视图

def phone_request(request):
    user_id = request.user.id
    uuid = request.GET.get('uuid')
    profile_id = profiles.objects.get(uuid=uuid).user_id
    p,created = Phone_request_list.objects.get_or_create(who=user_id,whose_id=profile_id)
    p.save()

但现在我想把我的模型改成多对多的字段。

class Phone_request_list(models.Model):
    who = models.IntegerField(null=True)
    whose = models.ManyToManyField(User) 

这次我该怎么在 get_or_create 中检查 whosewho 呢?请帮帮我。

1 个回答

6
def phone_request(request):
    user_id = request.user.id
    uuid = request.GET.get('uuid')
    profile_id = profiles.objects.get(uuid=uuid).user_id
    p,created = Photo_request_list.objects.get_or_create(who=user_id)
    p.whose.add(profiles.objects.get(uuid=uuid))
    p.save()

顺便说一下,当你使用外键(ForeignKey)时,最后那个 p.save() 是不需要的,但现在你用的是多对多关系(M2M),所以就需要了。

撰写回答