Python 如何在Django中获得带有外键的级联下拉选择框?
因此,我有一款名为Python 如何在Django中获得带有外键的级联下拉选择框?,python,django,django-forms,django-templates,django-views,Python,Django,Django Forms,Django Templates,Django Views,因此,我有一款名为Car的车型,外键为制造商车型。我还有一个carcharacteristics车型,外键为Car 这是代码的样子: class Car(models.Model): idcar = models.AutoField(primary_key=True) manufacturer = models.ForeignKey(Manufacturer, null=True, blank=True, on_delete=models.SET_NULL) name =
Car
的车型,外键为制造商
车型。我还有一个carcharacteristics
车型,外键为Car
这是代码的样子:
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>
汽车特性
{%csrf_令牌%}
{{char\u char\u form.as\u table}
显示此表单时,我有一个下拉选择字段,其中包含所有可能的车型。我想要的是有两个选择字段。我希望第一个可以让您选择制造商
,然后第二个可以显示拥有该制造商的所有可能的汽车
。然后,当您提交表单时,它会将您选择的Car
分配给carcharacteristics
车型的外键
如果你去看看,当你点击“你的车”,这就是我想要的。如何做到这一点?您需要使用AJAX获取所选制造商的数据,并相应地填充car字段。这需要在视图代码中完成,并将汽车获取的数据返回到模板中,并使用模板语言填充字段。前面的两个答案可能会有所帮助,并且