Python 在Django中如何按用户类型筛选选择字段?

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,

我已经创建了一个客户用户模型,还有另一个模型查询。在查询模型中,有一个服务字段与自定义用户模型相关。我希望按用户类型筛选现场服务。我希望服务字段仅显示员工用户选择

这是我的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)
参考链接:


这将起作用,并给予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')))