【问题标题】:Generating reports with dynamic field filters in django在 django 中使用动态字段过滤器生成报告
【发布时间】: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


【解决方案1】:

查看Django-Filter,它是用于在 Django 应用程序中进行过滤的标准包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2016-08-21
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多