有没有一种方法可以使用 django-filter 和来自 cities-light 的 City 的位置外键来制作下拉复选框

Is there a way to make dropdown checkbox with django-filter and location foreignkey for City from cities-light

我用 django-filter 创建了一个下拉列表复选框,我设法做到了 使用选择选项为某些字段创建,但我无法检索 城市之光城市的数据库信息。什么时候放城市 选择值,我得到这个错误:

*

TypeError at / 'City' object is not iterable

这部分工作正常:

        CITY_CHOICES = (
            ('city1','city1'),
            ('city2','city2'),
        )

        class PostFilter(filters.FilterSet):
            location = filters.MultipleChoiceFilter(field_name='location', choices=CITY_CHOICES, widget=forms.CheckboxSelectMultiple())
            class Meta:
                model = Post
                fields = ['location']

本题部分:

from cities_light.models import City

class PostFilter(filters.FilterSet):
    location = filters.MultipleChoiceFilter(field_name='location', choices=City, widget=forms.CheckboxSelectMultiple())
    class Meta:
        model = Post
        fields = ['location']

我希望我的城市选择得到相同的结果。我怎样才能继续这样做

我认为您可以改用 ModelMultipleChoiceField,因为您使用的是模型 City。像这样:

class PostFilter(filters.FilterSet):
    location = filters.ModelMultipleChoiceFilter(queryset=City.objects.all())
    class Meta:
        model = Post
        fields = ['location']