python - 在django中连接外键上的对象查询结果

标签 python django django-models

我有两个模型,我想从中获得一个外键结果。

# 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.contentblock.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

获取查询集中第一个blockcontentcontent

当然,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/

相关文章:

python - 超过最大重试次数-Elasticsearch

python - Django 休息框架 : Overwriting validation error keys

Django 管理站点反向外键内联

python - matplotlib 的 histogramdd 是如何工作的?

python - 如何使用 django-admin.py makemessages --all

python - 如何解决 django.core.exceptions.ImproperlyConfigured : Requested setting INSTALLED_APPS error?

django - 非默认参数跟随默认参数

python - 在 Django Admin 中,选项可以依赖于其他值吗?

python - 索引数组中的两组列

python - 用于获取查询的模型管理器和模型方法