Python 如何在django中筛选项目

Python 如何在django中筛选项目,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我在我的应用程序中有一些用户,其中一些是管理员,一些是供应商,我只想过滤那些供应商。我试过使用一些queryset,但我没有得到它。我还希望得到一些建议,从中我可以了解更多关于在Django或python中过滤对象的信息。谢谢 models.py class User(AbstractBaseUser, PermissionsMixin): email = models.EmailField(max_length=254, unique=True) is_staff = mode

我在我的应用程序中有一些用户,其中一些是管理员,一些是供应商,我只想过滤那些供应商。我试过使用一些queryset,但我没有得到它。我还希望得到一些建议,从中我可以了解更多关于在Django或python中过滤对象的信息。谢谢

models.py

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(max_length=254, unique=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    last_login = models.DateTimeField(null=True, blank=True)
    date_joined = models.DateTimeField(auto_now_add=True)

    # CUSTOM USER FIELDS
    firstname = models.CharField(max_length=30)
    lastname = models.CharField(max_length=30)
    telephone = models.IntegerField(blank=True, null=True)

    USERNAME_FIELD = 'email'
    EMAIL_FIELD = 'email'
    REQUIRED_FIELDS = []

    def get_absolute_url(self):
        return "/users/%i/" % (self.pk)

class user_type(models.Model):
    is_admin = models.BooleanField(default=False)
    is_supplier = models.BooleanField(default=False)
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    def __str__(self):
        if self.is_supplier == True:
            return User.get_email(self.user) + " - is_supplier"
        else:
            return User.get_email(self.user) + " - is_admin"
views.py

def Viewsupplier(request):

    suppliers = User.objects.filter(i am getting stuck here with the appriopriate filter)  
    context = {"suppliers":suppliers}
    print(suppliers)

    return render(request, 'core/view-suppliers.html', context)
您可以使用以下选项进行筛选:

suppliers = User.objects.filter(user_type__is_supplier=True)
suppliers=User.objects.filter(用户\u类型\u为\u supplier=True)
如果定义关系(如
外键
OneToOneField
),也可以反向访问该关系。如果在查询中执行此操作,它将使用as名称作为关系的反向名称。如果您没有填写此项,它将采用,最后,就像这里的情况一样,默认为小写的模型名称

因此,我们在这里过滤
用户
对象,这样我们只检索
用户
s,其中
是供应商
真的