Django如何/何时计算ForeignKey对象

Django如何/何时计算ForeignKey对象,django,django-models,Django,Django Models,我有一个模型类a类(models.Model):user=models.ForeignKey(user) 现在如果我做aa=a.objects.get(pk=something\u existing);打印一份。用户不在目录下a.user但是没有给出属性错误 那么,什么时候计算实际用户?我查看了django.db.models.base.Model和django.db.models.base.ModelBase类,它们不会覆盖\uu getattr\uuuuu(我猜这可能已经完成了),那么这个计

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

现在如果我做a
a=a.objects.get(pk=something\u existing);打印一份。
用户不在
目录下
a.user
但是没有给出属性错误


那么,什么时候计算实际用户?我查看了
django.db.models.base.Model
django.db.models.base.ModelBase
类,它们不会覆盖
\uu getattr\uuuuu
(我猜这可能已经完成了),那么这个计算/填充的位置在哪里。

django是作为实现的。

django是作为实现的。

好的,但是我在
模型中看不到
\uuuu get\uuuu
和族。模型或元类,那么这是一个什么样的描述符呢?模型不是描述符,字段是。要明确的是,相关字段(ForeignKey、ManyToMany等)是作为描述符实现的(在db/models/fields/related.py中查找)。大多数字段(CharField、IntegerField)不使用描述符。编辑答案以更准确。好的,但我在
模型中没有看到
\uuuu get\uuuuu
和族。模型或元类,那么这是一个描述符吗?模型不是描述符,字段是。很明显,相关字段(ForeignKey、manytomy等)实现为描述符(查看db/models/fields/related.py)。大多数字段(CharField、IntegerField)不使用描述符。请编辑答案以更准确。