Django Admin中的ForeignKey或ManyToMany字段搜索

时间:2013-05-28 21:03:11

标签: django python-2.7 django-models django-admin

很抱歉,如果有人问这个问题,但我已经到处寻找,似乎无法找到让我点击大脑的内容。

如果我有这样的结构,是否可以在ForeignKey中搜索ManyToManyadmin字段关系。因此,当要输入价格信息时,车辆制造商可以搜索类型和名称,而不是从下拉框搜索数千辆车辆?

class Manufacturer(models.Model):
    manufacturer = models.CharField(max_length=100)

class VehicleType(models.Model):
    vehicle_type = models.CharField(max_length=100)

class VehicleInfo(models.Model):
    manufacturer = models.ForeignKey('Manufacturer')
    vehicle_type = models.ForeignKey('VehicleType')
    vehicle_name = models.CharField(max_length=200)

class RandomWebsitePriceInfo(models.Model):
    vehicle_info = models.ManyToManyField('VehicleInfo')
    website_price = models.FloatField()

我理想的做法是通过下拉框跟踪关系,就像我选择制造商一样,然后在车辆类型框中将是该制造商提供的可用车辆,然后在车辆信息框中是该制造商生产的所有车辆。

或者只是搜索车辆信息,这样如果我放入车型就会出现。

我已查看raw_input并搜索字段,但似乎无法弄明白。

由于 布赖恩

2 个答案:

答案 0 :(得分:7)

假设您在VehicleInfo管理页面上,请在admin.py中尝试添加:

search_fields = ['vehicle_name' , 'vehicle_type__vehicle_type' , 'manufacturer__manufaturer' ]

使用车辆模型,vehicle_name搜索该字段。

现在manufacturer__manufacturer将搜索制造商。双下划线表示它不是同一object上的字段,而是查找foreign key字段,因此第一个制造商指向制造商模型。第二个制造商告诉它在model上查找制造商字段。

答案 1 :(得分:2)

Django没有开箱即用,但有几个项目使用Javascript来添加它。

https://github.com/digi604/django-smart-selects是我推荐的主要内容。