2013-05-28 57 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