我有一个django模型
Models.py
class ReceiveDocket(models.Model):
sender_parent_client = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='sender_parent_client')
client_location = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='client_location')
received_at_warehouse = models.ForeignKey(Warehouse, on_delete=models.CASCADE, related_name='warehouse_list')
class Client(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
client_company = models.CharField(max_length=255, default=0)
client_name = models.CharField(max_length=255, default=0)
client_shipping_address = models.CharField(max_length=255, default=0)和一种接收待审的形式:

Views.py
@method_decorator([login_required, employee_required], name='dispatch')
class ReceiveDocketFormView(CreateView):
model = ReceiveDocket
fields = "__all__"
template_name = 'packsapp/employee/docketRecievedForm.html'
def form_valid(self, form):
product = form.save(commit=False)
product.save()
messages.success(self.request, 'The Docket was created with success!')
return redirect('employee:docket_table')如何更改视图,以便在选择发件人父客户端时,它会自动填充client location中的客户端地址,或者至少在下拉列表中显示客户端地址?
发布于 2019-09-17 08:20:25
选择是在模板中完成的,因此,启用此功能的任何更改都是从在那里做出的决策开始的。
你有两种可能的方法来做到这一点
1.使用Ajax调用
注释中已经提到了这一点,但是这里有一个关于如何实现这个问题的单倍配合物教程。这是更好的方法,但显然比其他方法要复杂一些。
因为2是同一个模型,所以您可能会使用纯前端Javascript。
这取决于下拉列表的选项数量是否合理,每个客户端只有一个地址。您可以在模板中手动实现表单,并将类似的内容添加到代码中。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<form action="/" id="carform">
</form>
<select name="countrylist" form="carform" class="first" onchange="myFunction()">
<option value="none" selected>-----</option>
<option value="canada">Canada</option>
<option value="usa">USA</option>
<option value="uk">UK</option>
<option value="france">France</option>
</select>
<select name="capitallist2" form="carform" class="second" onchange="myFunction()">
<option value="none" selected>-----</option>
<option value="canada">Ottawa</option>
<option value="usa">Washington</option>
<option value="uk">London</option>
<option value="france">Paris</option>
</select>
<input form="carform" type="submit">
<script>
function myFunction() {
$(".second").val($(".first").val());
}
</script>在这两种情况下,您只需使用for循环来填充<select>。
https://stackoverflow.com/questions/57968880
复制相似问题