簡體   English   中英

如何在Django中使用我的外鍵獲得級聯下拉選擇框?

[英]How do I get a cascading drop down selection box with my foreign keys in Django?

因此,我有一個名為Car的模型,帶有Manufacturer模型的外鍵。 我也有一個帶有Car外鍵的CarCharacterisitcs模型。

代碼如下所示:

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 ,那么當您單擊“您的車輛”時,這就是我想要的。 我怎么做?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM