簡體   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