如何在具有ManyToManyField的django模型中过滤查询集?

时间:2016-05-16 18:10:16

标签: django django-admin manytomanyfield

我有一个“消息”模型,其中“用户”的 ManyToManyField 。 在管理站点中,我可以为多个用户添加消息。我正在尝试创建一个可以根据user_id过滤消息的视图。由于为此ManyToManyField创建了数据库中的新表,因此如何实现相同的

class Messages(models.Model):
id = models.AutoField(primary_key=True)
message = models.CharField('Message',max_length=1000)
user = models.ManyToManyField('user',blank=True,null=True)
...

我想做类似的事情:

def sendMessage(userId)
    messageObj = Messages.objets.filter(user_id=userId)

任何人都可以帮助我并告诉我如何过滤特定用户的消息? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

要过滤特定用户的消息,您的代码看起来是正确的(它只是一个错字)。它应该是这样的:

sparrow

如果您想使用queryset = Messages.objects.filter(user=user) (我会将其重命名为userID,个人):

user_id

这两个都会给你一个queryset = Messages.objects.filter(user.id=user_id) ,这是一个类似于数组的数组。如果你需要一个更精细的值,你可以继续过滤。例如:

queryset

答案 1 :(得分:0)

为关系设置related_name

class Messages(models.Model):
...
user = models.ManyToManyField('user',blank=True,null=True, related_name='messages')
...

然后你可以简单地做user.messages,它返回一个带有用户消息的QuerySet