【发布时间】:2020-09-12 19:27:27
【问题描述】:
我正在向用户显示模型字段和相关字段的列表。用户可以在一个或多个字段上设置过滤器。我需要根据这些过滤器返回结果。
这是我的员工模型
employeeID = models.AutoField(primary_key=True, db_index=True)
joiningDate = models.DateField(null=True, blank=True)
department = models.IntegerField()
designation = models.IntegerField()
qualification = models.CharField()
highestDegree = models.CharField()
name = models.CharField(max_length=50)
fatherName = models.CharField(max_length=50, null=True, blank=True)
motherName = models.CharField(max_length=50, null=True, blank=True)
dob = models.DateField(null=True, blank=True)
gender = models.IntegerField(choices=GenderTypes.choices(), null=True, blank=True)
religion = models.IntegerField(choices=ReligionChoices.choices())
category = models.IntegerField(choices=CategoryChoices.choices())
address = models.TextField(null=True, blank=True)
除了这些模型字段之外,用户还可以对一些连接的字段应用过滤器,例如存储在另一个表中的薪水,其中employeeID 作为外键。过滤器可以是特定值以及范围,例如薪水 (10000 - 20000)。
我知道 Django 不提供这样的功能,我需要编写自定义逻辑。我只需要确认是否应该为每个字段编写硬编码逻辑,或者有一种方法可以找到特定字段是否属于该模型。如果没有,有没有办法可以从模型中得出该特定字段的关系?这两件事结合起来应该足以让我们实现这一点。
非常感谢您的宝贵时间和帮助
【问题讨论】:
-
Django 没有这个功能。如果可以选择,我会编写一些逻辑来包装来自客户端的输入并转发到 Django ORM
-
@ArakkalAbu 我更新了我的问题,使其更加具体。可以看看吗?
-
为什么不使用标准的 Django 过滤器django-filter.readthedocs.io/en/stable?
-
@Ken4scholars 这正是我想要的。如果我不想使用这个包,它也让我知道了如何实现它。如果您发布了答案,我会接受这个作为答案。非常感谢。
-
我已将其添加为答案,因此您可以接受它
标签: python django django-models django-rest-framework