首页 > 解决方案 > 从另一个 django 模型中获取字段?

问题描述

如何从员工应用程序获取字段 pto 并在权限应用程序中使用它。

员工/models.py

class Employee(AbstractUser):
    department = models.ForeignKey(Department, on_delete=models.CASCADE,blank=True, null=True)
    pto = models.IntegerField(default=20)
    is_deleted = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    roles = models.ManyToManyField(Role, related_name='+')

    def __str__(self):
        return self.username

权限/models.py

class Permission(models.Model):
    STATUS = (
        ('PENDING', 'PENDING'),
        ('DENIED', 'DENIED'),
        ('ACCEPTED', 'ACCEPTED')
    )
    user = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='lorem')
    description = models.CharField(max_length=255)
    date_created = models.DateTimeField(auto_now=True, blank=True, null=True)
    date = models.DateField()
    status = models.CharField(max_length=200, choices=STATUS, default=STATUS[0][0])
    is_deleted = models.BooleanField(default=False)


    def __str__(self):
        return self.description

抱歉,如果不清楚,请提前致谢

标签: pythondjangodjango-modelsdjango-rest-frameworkdjango-views

解决方案


将此添加到类权限模型

from yourproject.apps.employee.models import Employee

class Permission(models.Model):
    ..........

    def get_pto(self):
        return int(self.user.pto) # if it's floating point number then change int to float

现在你可以get_pto在你的 html 中使用,{{ form.get_pto }}

抱歉,如果这不是您要找的东西,请让我清楚地知道,如果可以,我会尽力回答。


推荐阅读