2013-05-28 68 views
4

对不起,如果这已被问到,但我已到处寻找,似乎无法找到什么使它在我的大脑中点击。在Django Admin中的ForeignKey或ManyToMany字段搜索

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

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和搜索领域,但似乎无法弄清楚。

感谢 布赖恩

回答

1

Django不这样做开箱即用,但也有一对夫妇使用Javascript功能来添加它的项目。

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

+0

非常感谢!这似乎很好。 –

+0

开箱即用不支持钻取,但外键搜索是。 –

2

假设你是VehicleInfo管理页面上,在你的admin.py,试着加入:

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

与车辆的车型,在那场vehicle_name搜索凝望。

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

+1

这应该是被接受的答案:) – R4chi7

相关问题