我在将字段从扩展用户模型传递到Django中的模板时遇到了问题。
我在名为user_management的新应用中定义了模型中的扩展用户字段:
#user_management/models.py
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
class lab_user(models.Model):
user = models.OneToOneField(User)
personal_order_list_url = models.URLField("Personal order list URL", max_length=255, blank=False, unique=True)
abbreviation_code = models.CharField("Abbreviation code", max_length=3, blank=False, unique=True)
def save(self, force_insert=False, force_update=False):
self.personal_order_list_url = self.personal_order_list_url.lower()
self.abbreviation_code = self.abbreviation_code.upper()
super(lab_user, self).save(force_insert, force_update)
然后我在admin.py中注册了新字段:
#user_management/admin.py
from __future__ import unicode_literals
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from .models import lab_user
class lab_user_inline(admin.StackedInline):
model = lab_user
can_delete = False
verbose_name_plural = 'Additional Fields'
class UserAdmin(BaseUserAdmin):
inlines = (lab_user_inline, )
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
我可以在“身份验证和授权”中看到新字段,我想这意味着我已经完成了所有“正确”的工作。
当我尝试使用{{ request.user.x }}
x
可能是first_name
,personal_order_list_url
或abbreviation_code
来调用模板中的字段时,我可以检索到所需的值适用于first_name
和personal_order_list_url
,但不适用于abbreviation_code
。
如果request.user.personal_order_list_url
有效,request.user.abbreviation_code
也应该有效,不是吗?
答案 0 :(得分:0)
request.user.lab_user.personal_order_list_url