[英]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.