I have a Room model and I want to add the is_member
boolean field to a queryset with rooms. How can i do this? I was thinking of using .annotate ()
, but that doesn't work for my task.
models.py
class Room(models.Model):
name = models.CharField(max_length=150)
members = models.ManyToManyField(User, blank=True)
I present the solution like this:
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
Help me please
Update! Sorry. I wrote user.is_member = is_member
instead of room.is_member = is_member
You can try this:
Create a model called Profile and add the is_member field to it.
models.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)
And use Profile
for member field as ForeignKey
instead of User
.
class Room(models.Model):
name = models.CharField(max_length=150)
member = models.ForeignKey(User, blank=True)
And then set the is_member
field of the Profile
object to True or False accordingly. see below code:
user = Profile.objects.get(user=request.user)
user.is_member = Room.objects.filter(member=user).exists()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.