【问题标题】:How/When does Django calculate the ForeignKey objectDjango 如何/何时计算 ForeignKey 对象
【发布时间】:2010-01-17 08:54:41
【问题描述】:

我有一个模型类class A(models.Model): user = models.ForeignKey(User)

现在如果我执行a = A.objects.get(pk = something_existing); print a.__dict__user 不在__dict__ 中。 a.user 但是没有给出属性错误。

那么实际用户是什么时候计算出来的呢?我查看了django.db.models.base.Modeldjango.db.models.base.ModelBase 类,它们没有覆盖__getattr__,(我猜这可能正在完成),所以这个计算/填充在哪里。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    Django relation fields 被实现为descriptors

    【讨论】:

    • 好的,但是我在models.Model 或元类中没有看到__get__ 和家人,那么这是一个描述符吗?
    • 模型不是描述符,字段是。
    • 明确地说,相关字段(ForeignKey、ManyToMany 等)被实现为描述符(查看 db/models/fields/related.py)。大多数字段(CharField、IntegerField)不使用描述符。
    • 编辑答案更准确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    相关资源
    最近更新 更多