python - Django:如何从相关管理器访问原始实例?

标签 python django django-models django-orm

我想在我的管理器方法 baz 中访问 Foo 实例 foo:

foo.bar_set.baz()

baz 通常采用 Foo 类型的参数:

BarManager(models.Manager):
    def baz(self, foo=None):
        if foo is None:
            # assume this call originates from
            # a RelatedManager and set `foo`.
            # Otherwise raise an exception
        # do something cool with foo

这样,上面的第一个查询和下面的查询的工作原理是相同的:

Bar.objects.baz(foo)

Bar 将有一个 Foo 的外键:

class Bar(models.Model):
    foo = models.ForeignKey(Foo)
    objects = BarManager()

最佳答案

至少在 Django 2.1 中,您可以简单地执行以下操作:

foo.bar_set.instance

关于python - Django:如何从相关管理器访问原始实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1511256/

相关文章:

python - Django 定时事件

django - 如何修复 django dumpdata "_django_curs_139705..."的错误

python - 为没有多对多关系的 friend 创建架构?

python - 当两个外键指向同一个表时如何使用工厂男孩

python - 如何访问selenium中具有相同类名的第二个元素

python - django modelchoicefield 与未保存的模型

python - 从 Python3 中的 base64 编码字符串中删除新行 "\n"?

python - Django:与 TCP 服务器通信(扭曲?)

python - 如何通过相关项的条件聚合对 Django 查询集进行排序?

django - 使用 Django 模型表单上传图像