没有外键的 Django 管理员自动完成过滤器

django admin autocomplete filter without foreign key

提问人:Doron_g 提问时间:11/4/2023 更新时间:11/5/2023 访问量:30

问:

我有这个模型:

class Person(models.Model):
    first_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    age = models.PositiveIntegerField(null=True, blank=True)
    gender = models.CharField(choices=Gender.choices, null=True, blank=True)
    city = models.CharField(max_length=200, null=True, blank=True)

我需要“城市”字段的自动完成过滤器

https://github.com/farhan0581/django-admin-autocomplete-filter 没有完成这项工作

django 过滤器 django-admin-filters django-advanced-filters

评论


答:

0赞 comiser 11/5/2023 #1

你可以使用 django-autocomplete-light 和 istall 它。

为城市字段创建自定义小组件:

from autocomplete_light.widgets import AutoCompleteWidget
class CityAutocompleteWidget(AutoCompleteWidget):
    def get_model_objects(self, query):
        return City.objects.filter(name__icontains=query)

更新 Person 模型以使用新的小组件:

class Person(models.Model):
    first_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    age = models.PositiveIntegerField(null=True, blank=True)
    gender = models.CharField(choices=Gender.choices, null=True, blank=True)
    city = models.CharField(max_length=200, null=True, blank=True, widget=CityAutocompleteWidget)

评论

0赞 Doron_g 11/5/2023
我没有城市模型,只有个人模型中的字段“城市”
0赞 comiser 11/6/2023
我知道你可以在城市字段中添加一个自定义小部件来自动完成它,首先安装 django-autocomplete-light 包