首页 > 解决方案 > 使用特定字段中的所有唯一值创建一个 ChoiceFilter (Django)

问题描述

我有一个Car包含以下一些字段的模型:

#models.py
from django.conf import settings

class Car(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE,null=True)
    tag = models.CharField(max_lenght=16) #User-specified tag for each car
    n_wheels = models.IntegerField()
       .
       .

这个想法是每个用户都可以创建一个用户想要Cartag字段,例如,personal等。work-carfor leasing

在我的 HTML 中有一个用户添加的所有汽车的列表,但我想创建一个过滤器,以便用户可以过滤tag以快速找到想要的汽车列表。

由于tag完全由用户定义,唯一的限制是标签的长度(即,如果用户决定使用标签创建 4 辆汽车,["Workzz","workzz","wOrK","WORK"]则允许并视为 4 个不同的标签)。每个用户的不同标签的预期数量很少,因此我想要该字段的一些下拉过滤器tag

由于我事先不知道tag用户想要为每辆车设置什么,因此我无法创建ChoiceField,因此我很难找到一种方法来获取tag特定(登录)用户的所有唯一值,并将它们放入 DropDown -筛选。

我想到的一种方法是;在视图中,加载给定用户的唯一标签,创建一个带有选择字段(带有标签)的表单,并基于该表单创建一个过滤器。这似乎是一种可能无法很好扩展的肮脏解决方法,但这是我能想出的唯一想法。

标签: djangodjango-filter

解决方案


推荐阅读