python - 如何在 Django 中按用户类型过滤选择字段?
问题描述
我创建了一个客户User
模型,并且我有另一个模型Enquiry
。在Enquiry
模型中有一个与自定义User
模型相关的服务字段。我希望按用户类型过滤现场服务。我希望服务字段仅向我显示员工用户选择。
这是我的models.py:
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=254,unique=True)
name = models.CharField(max_length=254, null=True)
email = models.EmailField(max_length=254, null=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_Customer = models.BooleanField(default=False)
is_Service_Provider = models.BooleanField(default=False)
last_login = models.DateTimeField(null=True, blank=True)
date_joined = models.DateTimeField(auto_now_add=True)
USERNAME_FIELD = 'username'
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
def get_absolute_url(self):
return "/users/%i/" % (self.pk)
def get_username(self):
return self.username
class Enquiry(models.Model):
name = models.CharField(max_length=254 , null=False)
email = models.EmailField(max_length=254, null=False)
phone_no = models.IntegerField(null=False)
service_requied = models.ForeignKey('accounts.Category', on_delete=models.CASCADE, null=False)
subcategory = models.ForeignKey('accounts.SubCategory', on_delete=models.CASCADE, null=False)
country = models.ForeignKey('accounts.Country', on_delete=models.CASCADE, null=False)
state =models.ForeignKey('accounts.State', on_delete=models.CASCADE, null=False)
city = models.ForeignKey('accounts.City', on_delete=models.CASCADE, null=False)
address = models.CharField(max_length=254, null=False)
defects = models.TextField(max_length=254, null=False)
service = models.ForeignKey('accounts.User', on_delete=models.CASCADE, null=False)
def __str__(self):
return self.service.username
解决方案
外键关系过滤使用双下划线。这可能有效:
Enquiry.objects.filter(service__is_staff=True)
参考链接:
https://docs.djangoproject.com/en/3.0/topics/db/queries/#lookups-that-span-relationships
推荐阅读
- angular - PrimeNG 版本 7 与 Angular 9 IVY 不兼容
- curl - 使用 Curl 命令访问受 Azure AD 保护的 ElasticCloud-Kibana API
- php - 如何在 Codeigniter 中获取数据库时间剩余的小时数
- javascript - Javascript多级对象扩展运算符
- c - 将输入\输出管道从父进程重定向到 cmd 子进程 C/C++ WinApi
- java - 在方法类型参数列表或方法参数中定义有界类型参数
- node.js - 在节点中创建 gcs 存储
- r - 编织文件 r 降价
- javascript - Angular中的客户端IP地址
- reactjs - Typescript 从 React 渲染道具中的元组推断类型