员工模型详细信息未显示在 django 模板的导航栏中

Employee model details not showing in navbar in django template

我在 navbar.html

中显示我的员工姓名和照片时遇到问题

我有一个来自帐户应用程序结构的 CustomUser 模型,如下所示

core
  |_accounts
     |_models.py (CustomUser is in here)
  |
  |_employees
    |_models.py (Employee model in here)

我的自定义用户如下

class CustomUser(AbstractBaseUser, PermissionsMixin):
    email       = models.EmailField(_('email address'), unique=True)
    is_staff    = models.BooleanField(default=False)
    is_active   = models.BooleanField(default=True)
    date_joined = models.DateTimeField(default=timezone.now)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()

    def __str__(self):
        return self.email

我的员工模型是

class Employee(models.Model):
    # PERSONAL DATA
    user        = models.ForeignKey(User,on_delete=models.CASCADE, related_name="employees")
    title       = models.CharField(_('Title'), max_length=10, default='Mr', choices=TITLE, blank=False, null=True)
    image       = models.ImageField(_('Profile Image'), upload_to='avatars/', blank=True, null=True, help_text='upload image < 2.0MB')#work on path username-date/image
    firstname   = models.CharField(_('Firstname'), max_length=125, null=False, blank=False)
    lastname    = models.CharField(_('Lastname'), max_length=125, null=False, blank=False)

在我的导航栏模板中有

<img alt="image" src="{{ request.user.employees.image.url }}" class="user-img-radious-style">

<div class="dropdown-title">Hello {{ request.user.firstname }}</div>

我的模板未显示所需的结果

首先,您的用户字段应该与 CustomUser 相关,而不是 User class。 此外,request.user 会在 settings.py 中为您提供 AUTH_USER_MODEL 设置的实例,在您的情况下是 CustomUser 模型的实例,该实例没有firstname 个字段。

AbstractBaseUser 没有 first_namelast_name 字段,相反,您可以将继承切换到 AbstractUser,然后再切换到 CustomUser class 会自动继承 first_namelast_name.

或者按照@Ankit 的建议,您可以通过 request.user.employee.firstname

获得 Employee 名字

请记住,按照@Iain 的建议,您的关系应该是 OneToOne。