计算 ManyToManyField 中的值 - Django

Count values in ManyToManyField - Django

我需要一些帮助。我有一个模型 "Event" with manytomanyfield "users":

class Event(models.Model):
    name = models.CharField(max_length=26)
    description = models.CharField(max_length=200)
    date = models.DateField()
    user = models.ForeignKey(User)
    users = models.ManyToManyField(User, related_name="event", blank=True)
    image = models.ImageField(
        upload_to='images/',
        default='images/default.png'
    )

因此,manytomany 中介 table 有两个字段:user_idevent_id。 如何计算这个table中有多少event_id = 1event_id = 2...?谢谢

您只需要以下事件模型:

class Event(models.Model):
        name = models.CharField(max_length=26)
        description = models.CharField(max_length=200)
        date = models.DateField()
        user = models.ManyToMany(User, related_name="events")
        image = models.ImageField(
            upload_to='images/',
            default='images/default.png'
        )

然后从 User 的对象(比如 logged_in_user)你可以调用 logged_in_user.events.all() 来获取所有事件。或者,如果您只需要事件 ID,则 logged_in_user.events.values_list('id', flat=True)

如果你只是想要一个计数,那么它应该是 logged_in_user.events.count()。如您所见,您可以像对待任何其他管理器一样对待 events(就像您的用户模型中的对象)。

如果您需要 event_id 参加单个活动的用户数。用户这个:Event.objects.get(id=event_id).users.count()