在使用多对多关系时正确获取值

时间:2017-06-17 22:11:58

标签: django python-3.x django-models

我有像这样的标准用户模型和类别模型;

class Categories(models.Model):
    name=models.CharField(max_length=100)
    def __str__(self):
        return self.name

这是另一个关系类,它将一些用户与某些类别联系起来;

class Interested(models.Model):
    user = models.ManyToManyField(User)
    category = models.ManyToManyField(Categories)

例如,如果我有Bob,Eric,Oliver,Michael等用户

和篮球,足球等类别

和那样的关系

  • Bob - >篮球,足球

  • Eric->篮球

  • Oliver - >足球

(迈克尔对任何事情都不感兴趣)

我想得到谁对什么感兴趣的清单?我怎么处理这个?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式获取对用户感兴趣的实例:

print

并按以下方式列出链接的分类:

interested = Interested.objects.get(user="your user")

但是,如果不是出于任何其他原因,我会直接将该类别直接链接到用户....

interested.category.all()

这样您就可以获得用户的分类:

class Category(models.Model): name = models.Charfield() user = models.ManyToManyField(user)

如果您将此传递给模板,请执行以下操作:

categorys = Category.objects.filter(user="youruser")

要让用户对某个类别感兴趣,只需使用以下命令获取Category实例:

{% for category in categorys %} {{ category.name }}{% endfor %}

以及相关的用户模型:

category = Category.objects.get(name="categoryname")

如果你想为所有类别使用这个,只需使用普通的for循环:

usersincategory = category.user.all()