django admin 自动完成过滤器,无需外键

问题描述 投票:0回答:1

我有这个型号:

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 filter django-admin django-admin-filters django-advanced-filters
1个回答
0
投票

您可以使用 django-autocomplete-light 并安装它。

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.