Django:访问模板中的一对一字段

Mer*_*moz 1 django django-templates

我的模型UserProfile包含一个OneToOneField名为的类Info:

class UserProfile(models.Model):
    user = models.OneToOneField(User, primary_key=True)
    info = models.OneToOneField(Info, null = True, blank= True)
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我可以访问配置文件

{{user.get_profile}}
Run Code Online (Sandbox Code Playgroud)

如何访问Info?我试过了

{{user.get_profile.info.photo.url}}
Run Code Online (Sandbox Code Playgroud)

没有成功.

Lak*_*sad 6

你不能这样做.

user.get_profile()
Run Code Online (Sandbox Code Playgroud)

是一种方法,它在被访问时被执行

{{user.get_profile}}
Run Code Online (Sandbox Code Playgroud)

而不是当你尝试访问更多的配置文件属性时 {{user.get_profile.attr1}}

方法是从视图中发送配置文件对象.如果你想在很多视图中使用它,你应该把它变成TemplateContextProcessor.

还有另一种使用属性配置文件扩展User模型的方法,该属性配置文件@propertyget_profile之前描述的操作相同.