Python 在Django中如何按用户类型筛选选择字段?
我已经创建了一个客户用户模型,还有另一个模型查询。在查询模型中,有一个服务字段与自定义用户模型相关。我希望按用户类型筛选现场服务。我希望服务字段仅显示员工用户选择 这是我的models.py:Python 在Django中如何按用户类型筛选选择字段?,python,python-3.x,django,django-models,Python,Python 3.x,Django,Django Models,我已经创建了一个客户用户模型,还有另一个模型查询。在查询模型中,有一个服务字段与自定义用户模型相关。我希望按用户类型筛选现场服务。我希望服务字段仅显示员工用户选择 这是我的models.py: class User(AbstractBaseUser, PermissionsMixin): username = models.CharField(max_length=254,unique=True) name = models.CharField(max_length=254,
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)
参考链接:
这将起作用,并给予queryset。请检查提供的链接或发布确切的错误。您对显示的代码有什么疑问?当您尝试这样做时,是否有任何特殊问题?我想知道的是,用户将在何时填写表单,并且在填写查询表单时,用户只能在员工用户上看到在职字段,而不是所有用户。
from django.db.models import Subquery
staff_users = User.objects.filter(is_staff=True)
Enquiry.objects.filter(service_id__in=
Subquery(staff_users.values('id')))