django - 如何在 Django 模型的另一个模型中根据角色显示用户?
问题描述
模型.py
class Employee(models.Model):
ROLE = (
('Courier', 'Courier'),
('Receptionist', 'Receptionist'),
('Admin', 'Admin')
)
user = models.OneToOneField(User,null=True, on_delete=models.CASCADE)
fullname = models.CharField(max_length=400, null=True)
role = models.CharField(max_length=200, null=True, choices=ROLE)
active = models.BooleanField(default=False, blank=True, null=True)
def __str__(self):
return self.fullname
class OutgoingMail(models.Model):
mail_ref = models.CharField(max_length=250, null=True)
mail_to = models.CharField(max_length=250, null=True)
courier = models.ForeignKey(Employee, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.mail_to
所以,我的问题是:如何根据员工模型中的员工角色在外发邮件中显示员工姓名。仅显示角色为“快递员”的员工?
解决方案
如果你想在 Django admin 的字段集中过滤外键你基本上可以在你的 Admin 类中使用 formfield_for_foreignkey 函数
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "courier": #courier is the foreignkey name
kwargs["queryset"] = Employee.objects.filter(role='Courier') #role ='Courier' in choices
return super().formfield_for_foreignkey(db_field, request, **kwargs)
推荐阅读
- python-3.x - 如何在python中将多个文件存储在一个文件中?
- mysql - MySQL - 三个实体之间的多对多关系
- python - 使用 dic 从键中提取特定值
- python - 用 Python 合并 csv 文件
- python - 使用 PyCharm 调试 Python 时跳过行
- reactjs - Laravel ReactJS - 将 CSS 文件导入组件后无限编译
- php - Opencart全新安装错误:无法打开流:权限被拒绝
- qt - 突出显示文本 Qt
- python - 预测函数每次都给出相同的输出
- python - 我写了一个非常基本的二次方程代码,它没有像我想要的那样返回“无”。它只是打印了两次正确的答案