【发布时间】:2022-01-26 21:33:21
【问题描述】:
大家好!
Django 中的新手,很困惑,感谢帮助!感谢stackoverflow用户,我创建了一个表,例如:
| Organization | Total amount of appeals | Amount of written form appeals | Amount of oral form appeals |
|---|---|---|---|
| Organization 1 | 3 | 1 | 2 |
| Organization 2 | 2 | 1 | 1 |
拥有三个模型:
class Organization(models.Model):
organization_name = models.CharField(max_length=50)
class AppealForm(models.Model):
form_name = models.CharField(max_length=50)
class Appeal(models.Model):
organization = models.ForeignKey(Organization, on_delete=models.CASCADE)
appeal_form = models.ForeignKey(AppealForm, on_delete=models.CASCADE)
applicant_name = models.CharField(max_length=150)
appeal_date = models.DateField()
组织模型的对象:
| organization_name |
|---|
| Organization 1 |
| Organization 2 |
AppealForm模型的对象:
| form_name |
|---|
| In written form |
| In oral form |
上诉模型的对象:
| organization | appeal_form | applicant_name |
|---|---|---|
| Organization 1 | In written form | First and Last name |
| Organization 1 | In oral form | First and Last name |
| Organization 1 | In oral form | First and Last name |
| Organization 2 | In written form | First and Last name |
| Organization 2 | In oral form | First and Last name |
在 views.py 文件的函数中,我创建了一个查询来呈现,例如:
from django.db.models import Count, Q
organizations = Organization.objects.annotate(
).annotate(
total=Count('appeal'),
total_written=Count('appeal', filter=Q(appeal__appeal_form__form_name='in written form')),
total_oral=Count('appeal', filter=Q('appeal__appeal_form__form_name='in oral form'))
)
现在我想按 AppealForm 模型和上诉日期(Appeal_date Appeal_date 字段)过滤表格内容。案例:用户打开一个表格,然后从表格上方的搜索栏中选择要查看的申诉表和/或日期范围。
问题:如何使用django-filter包过滤views.py上面的查询?
【问题讨论】:
-
您过滤的是哪个型号?组织还是上诉?
-
嗨@nigel222,我正在过滤组织模型。
标签: python django django-models foreign-keys django-filter