【问题标题】:Django Foregin Key CountDjango外键计数
【发布时间】:2021-04-29 13:03:13
【问题描述】:

我正在尝试计算连接到RoomUsers 的数量。一个User 只能连接一个Room,一个Room 可以连接多个Users

我的模型是这样的

class User(AbstractBaseUser, PermissionsMixin):
    """Database model for users"""
    screen_name = models.CharField(max_length=255, unique=True)
    room = models.ForeignKey(
        Room, related_name='room', on_delete=models.CASCADE
    )
    ...
class Room(models.Model):
    """Database model for rooms"""
    name = models.CharField(max_length=100)
    is_full = models.BooleanField(default=False)
    ...

我想要做的是在分配了一定数量的Users 之后锁定Room 的任何实例。如何查找连接到给定房间的Users 的数量?我正在尝试的伪代码。

my_room.users.count >= max_users:
   my_room.is_full = True

提前谢谢你。

【问题讨论】:

    标签: python django-models foreign-keys


    【解决方案1】:

    要获取外来元素的数量,您可以这样做:

    User.objects.filter(room=my_room).count()
    

    【讨论】:

      【解决方案2】:
           from django.db.models import Count
      
           def get_queryset(self):  
              queryset = User.objects.filter(room=room_id) # if you want to filter for one room
              queryset = User.objects.all() # if you want to have a list of all rooms   
              return queryset.values('room').annotate(Count('id', distinct=True)).count() # will count unique rooms
      

      【讨论】:

      • distinct 不适用于不同于 psql 的数据库。
      猜你喜欢
      • 2014-06-08
      • 2016-01-05
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2012-03-30
      • 1970-01-01
      相关资源
      最近更新 更多