2012-06-30 63 views
1

所以我有一個叫做Car的模型,它帶有一個Manufacturer模型的外鍵。我還有一個CarCharacterisitcs模型,其外鍵爲Car如何使用Django中的外鍵獲取級聯下拉選擇框?

這是代碼的樣子:

class Car(models.Model): 
    idcar = models.AutoField(primary_key=True) 
    manufacturer = models.ForeignKey(Manufacturer, null=True, blank=True, on_delete=models.SET_NULL) 
    name = models.CharField(max_length=765) 

class Manufacturer(models.Model): 
    idmanufacturer = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=765) 

class CarCharacteristics(models.Model): 
    idcar_characteristics = models.AutoField(primary_key=True) 
    car = models.ForeignKey(Car, on_delete=models.PROTECT) 

我在做一個頁面,讓你添加CarCharacteristics

這是我的表單和視圖:

class CarCharacteristicsForm(ModelForm): 
    class Meta: 
     model = CarCharacterisitics 

def add_car_characteristics(request): 
    if request.method == 'POST': 
     car_char_form = CarCharacterisiticsForm(request.POST) 
     if car_char.is_valid(: 
      car_char_form.save() 
      return HttpResponseRedirect('/cars/car-characterisitcs') 
    else: 
     car_char_form = CarCharacterisiticsForm() 
    return render(request, 'car_characteristics/add_car_characteristics.html',{'car_char_form': car_char_form,}) 

在我的HTML頁面,我有這樣的:

<h1>Car Characteristics</h1> 
<form action="." method="POST"> 
{% csrf_token %} 
    <table id="characteristics_table"> 
     <tr> 
     <td> 
     <table id="car_characterisitcs_table"> 
      <td>{{ char_char_form.as_table }}</td> 
     </table> 
     </td> 
     </tr> 
    </table> 
    <p><input type="submit" value="Submit"></p> 
</form> 

當顯示這種形式,我有一個下拉選擇字段與所有我的可能的Car模型。我想要的是有兩個選擇字段。我希望第一個讓您能夠選擇Manufacturer,然後第二個顯示具有該製造商的所有可能的Cars。然後,當您提交表單時,它會將您選擇的Car分配給CarCharacterisitcs模型的外鍵。

如果你去看看Advance Auto Parts,當你點擊「你的車」時,這就是我想要的。我怎麼做?

+0

幾個以前的答案,可能有助於http://stackoverflow.com/questions/10214618/creating-dynamic-dropdown-options-based-off-dropdown-selection-stuck和http://stackoverflow.com/questions/ 1914358/django-chain-select and http://stackoverflow.com/questions/3233850/django-jquery-cascading-select-boxes – PhoebeB

回答

0

您需要使用AJAX來獲取選定製造商的數據並相應地填充汽車字段。這需要在視圖代碼內完成,並將汽車提取的數據返回到模板中,並使用模板語言填充該字段。