我有一个“消息”模型,其中“用户”的 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)
任何人都可以帮助我并告诉我如何过滤特定用户的消息? 提前谢谢。
答案 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