将字段从扩展用户模型传递到Django中的模板

时间:2018-01-24 11:22:41

标签: python django django-models django-templates

我在将字段从扩展用户模型传递到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_namepersonal_order_list_urlabbreviation_code来调用模板中的字段时,我可以检索到所需的值适用于first_namepersonal_order_list_url,但不适用于abbreviation_code

如果request.user.personal_order_list_url有效,request.user.abbreviation_code也应该有效,不是吗?

1 个答案:

答案 0 :(得分:0)

request.user.lab_user.personal_order_list_url