如何使用模型字段的不同值作为 select 字段的选择

How to use model's field's distinct values as select field's choices

我的模型是这样的。

class Student(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    roll_no = models.CharField(max_length=32)
    course = models.CharField(max_length=120)

现在我想使用 django_filters 制作一个过滤器表单,并希望使用课程字段的不同值作为 select 输入的选择,但它要求每个值都与唯一 ID 相关联,这字段没有任何唯一 ID。 我试过这个:

class StudentFilter(django_filters.FilterSet):
    course = django_filters.ModelChoiceFilter(queryset=Student.objects.values("course",flat = True).distinct(),empty_label=('Course'))
    class Meta:
         model = Student
         fields = []

但是没用。

注意我不想为课程制作单独的模型。

我相信 AllValuesFilter 完全符合您的要求

class StudentFilter(django_filters.FilterSet):
    course = django_filters.AllValuesFilter(field_name="course")
    
    class Meta:
         model = Student
         fields = []