以模板的形式访问django fk视图中的相关对象



我有一个模型

class Doctor(models.Model):
user = models.OneToOneField(
User,
on_delete=models.CASCADE,
primary_key=True,
related_name="user")
# other fields... 

在我的template中,我可以很容易地访问医生对象作为request.user.doctor,但在我的views中使用它会导致'User' object has no attribute 'doctor'错误。那么是否可以将其作为模板访问呢?在我的视图

related_name=…参数[Django-doc]是反向中关系的名称,所以要从User访问Doctor对象,因为你已经将其设置为user,因此你可以使用request.user.user访问Doctor对象,但这是误导。

因此,您最好将关系重命名为:
class Doctor(models.Model):
user = models.OneToOneField(
User,
on_delete=models.CASCADE,
primary_key=True,
related_name='doctor'
)
# other fields …

注意:通常最好使用settings.AUTH_USER_MODEL[Django-doc]引用用户模型,而不是使用User直接建模[Django-doc]。要了解更多信息,您可以查看参考User模型部分的文档。