我有两个模型,我想从中获得一个外键结果。
# Master List:
class Block(models.Model):
lesson = models.ForeignKey('Lesson')
name = models.CharField(max_length=100)
# Contains revisions, i.e. updates:
class BlockContent(models.Model):
block = models.ForeignKey('Block')
content = models.TextField()
type = models.IntegerField(default=1)
revision = models.IntegerField(default=0)
latest = models.BooleanField(default=True)
理想情况下,出于模板目的,我希望能够调用 block.content
或 block.type
,但这似乎并不容易可能的。
通过外键获取BlockContent
似乎很痛苦 - 尽管在这个特定 View 中只有一对一的结果,但它需要 .all() 和大量迭代。
我尝试过的东西:
additional = BlockContent.objects.get(block=block.id)
block.blockcontent_set.add(additional)
最佳答案
您拥有的是一对多关系,其中 Block
可以拥有许多 BlockContent
对象。
从 block 中获取内容的方法是使用反向关系,我认为这没有问题:
content = block.blockcontent_set.all()[0].content
获取查询集中第一个blockcontent
的content
。
当然,order_by
和所有其他 Django 查询集都可以在这里使用。
您还可以将 related_name 定义为:
class BlockContent(models.Model):
block = models.ForeignKey('Block', related_name=blockcontent)
并像这样使用它:
content = block.blockcontent.all()[0].content
关于python - 在django中连接外键上的对象查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32284513/