class Galleries(models.Model):
creation_date = models.DateTimeField()
name = models.CharField(max_length=255, unique=True)
gallery_type = models.ForeignKey(Categories)
class Categories(models.Model):
handle = models.CharField(max_length=255, unique=True)
class Values(models.Model):
category = models.ForeignKey(Categories)
language = models.CharField(max_length=7)
category_name = models.CharField(max_length=50)
现在,我只想从画廊开始,达到类别的价值。例如:galleries = Galleries.objects.get(id=1)
。现在我希望通过使用这个“画廊”对象以某种方式达到价值......用特定语言获得价值会好得多......我想念Django ORM的技能,所以如果可以,请指点我docs或给出一些代码示例。谢谢!
答案 0 :(得分:5)
galleries = Galleries.objects.get(id=1)
values = galleries.gallery_type.values_set.filter(language='language')
有趣的是,您使用了文档用于引用相关字段查找的确切措辞。我总觉得这个定义对于肠道来说很奇怪,也许是因为他们把它放在引号中。
关系“后退”
http://docs.djangoproject.com/en/1.2/topics/db/queries/#following-relationships-backward
答案 1 :(得分:1)
您可能希望使用select_related对象方法,以减少正在进行的查询次数。 select_related
gallery = Galleries.objects.select_related().get(id=1)
您可以在类别fk中设置值模型的相关名称:
class Values(models.Model):
category = models.ForeignKey(Categories, related_name="categories")
language = models.CharField(max_length=7)
category_name = models.CharField(max_length=50)
现在,您可以通过
获取特定语言的值列表values = gallery.gallery_type.categories.filter(language="language")