Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 过滤django admin中点亮的下拉列表中的字段_Python_Html_Django_Django Admin_Django Admin Filters - Fatal编程技术网

Python 过滤django admin中点亮的下拉列表中的字段

Python 过滤django admin中点亮的下拉列表中的字段,python,html,django,django-admin,django-admin-filters,Python,Html,Django,Django Admin,Django Admin Filters,我有一个非常简单的django模型: class Car(models.Model): carname = models.CharField(max_length=100) carmodel = models.CharField(max_length=100) carcountry = models.CharField(max_length=100) caryear = models.CharField(max_length=100) cardesc = m

我有一个非常简单的django模型:

class Car(models.Model):
   carname = models.CharField(max_length=100)
   carmodel = models.CharField(max_length=100)
   carcountry = models.CharField(max_length=100)
   caryear = models.CharField(max_length=100)
       cardesc = models.TextField()
以及显示所有记录的admin.py:

class UserForm(forms.ModelForm):
    cardesc = forms.CharField(widget=forms.Textarea(attrs={'cols': 120, 'rows': 20}))

class Meta:
    model = Cars


  class ModelAdmin(admin.ModelAdmin ):
     form = UserForm



  admin.site.register(Cars,ModelAdmin)
它很好用。现在,我的问题是: 我想有一个下拉列表,我可以选择汽车型号,然后根据我的选择过滤我的结果

我怎么能做到?我必须编辑Admin.py文件吗?Django对此有内置功能吗?或者我必须创建一个HTML模板?怎样请帮助我。

您必须添加

list_filter = ['carmodel', ]
到类ModelAdmin。

您必须添加

list_filter = ['carmodel', ]
到类ModelAdmin。

试试这个

class CustomForm(forms.ModelForm):

    class Meta:
        model = Cars

    cars_list = Cars.objects.values_list('carmodel', flat=True).order_by('carmodel').distinct()
    choice_list = []
    for car in cars_list:
        choice_list.append((car,car,)) 
    CAR_CHOICES = choice_list

    #Used 'ChoiceField' as you want dropdown list for carmodels stored in text fields 
    carmodel = forms.ChoiceField(widget=forms.Select, choices=CAR_CHOICES)

class CarsModelAdmin(model.ModelAdmin):
    form = CustomForm
    list_filter = ['carmodel']

admin.site.register(Cars,CarsModelAdmin)
试试这个

class CustomForm(forms.ModelForm):

    class Meta:
        model = Cars

    cars_list = Cars.objects.values_list('carmodel', flat=True).order_by('carmodel').distinct()
    choice_list = []
    for car in cars_list:
        choice_list.append((car,car,)) 
    CAR_CHOICES = choice_list

    #Used 'ChoiceField' as you want dropdown list for carmodels stored in text fields 
    carmodel = forms.ChoiceField(widget=forms.Select, choices=CAR_CHOICES)

class CarsModelAdmin(model.ModelAdmin):
    form = CustomForm
    list_filter = ['carmodel']

admin.site.register(Cars,CarsModelAdmin)
从:

ModelAdmin上的formfield_for_foreignkey方法允许您覆盖外键字段的默认formfield。例如,要基于用户返回此外键字段的对象子集,请执行以下操作:

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "car":
            kwargs["queryset"] = Car.objects.filter(owner=request.user)
        return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
这将使用HttpRequest实例过滤汽车外键字段,以仅显示用户实例拥有的汽车

从:

ModelAdmin上的formfield_for_foreignkey方法允许您覆盖外键字段的默认formfield。例如,要基于用户返回此外键字段的对象子集,请执行以下操作:

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "car":
            kwargs["queryset"] = Car.objects.filter(owner=request.user)
        return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
这将使用HttpRequest实例过滤汽车外键字段,以仅显示用户实例拥有的汽车


告知仅在1.6+中支持its可能会有所帮助告知仅在1.6中支持its可能会有所帮助+