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