计算ManyToManyField中的值 - Django

时间:2016-03-21 08:06:49

标签: python django manytomanyfield

我需要一些帮助。我有一个模特"活动"与manytomanyfield"用户":

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'
    )

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

1 个答案:

答案 0 :(得分:1)

您需要的只是以下型号的事件:

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()