繁体   English   中英

Django。 如何向查询中添加字段?

[英]Django. How do I add a field to a query?

我有一个房间 model,我想将is_member boolean 字段添加到带有房间的查询集中。 我怎样才能做到这一点? 我正在考虑使用.annotate () ,但这对我的任务不起作用。

模型.py

class Room(models.Model):
    name = models.CharField(max_length=150)
    members = models.ManyToManyField(User, blank=True)

我提出这样的解决方案:

rooms = Room.objects.all()
user = request.user
for room in rooms:
    members = room.members.all()
    is_member = user in members
    room.is_member = is_member # <- edited line

请帮帮我

更新! 对不起。 我写了user.is_member = is_member而不是room.is_member = is_member

你可以试试这个:

创建一个名为 Profile 的 model 并向其中添加 is_member 字段。

模型.py

from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_profile')
    is_member = models.BooleanField(default=False)

并将成员字段的Profile用作ForeignKey而不是User

class Room(models.Model):
    name = models.CharField(max_length=150)
    member = models.ForeignKey(User, blank=True)

然后将Profile object 的is_member字段相应地设置为 True 或 False。 见下面的代码:

user = Profile.objects.get(user=request.user)
user.is_member = Room.objects.filter(member=user).exists()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM