首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链式表格填写django表格

链式表格填写django表格
EN

Stack Overflow用户
提问于 2019-09-17 06:57:44
回答 1查看 321关注 0票数 0

我有一个django模型

Models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
@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中的客户端地址,或者至少在下拉列表中显示客户端地址?

EN

回答 1

Stack Overflow用户

发布于 2019-09-17 08:20:25

选择是在模板中完成的,因此,启用此功能的任何更改都是从在那里做出的决策开始的。

你有两种可能的方法来做到这一点

1.使用Ajax调用

注释中已经提到了这一点,但是这里有一个关于如何实现这个问题的单倍配合物教程。这是更好的方法,但显然比其他方法要复杂一些。

因为2是同一个模型,所以您可能会使用纯前端Javascript

这取决于下拉列表的选项数量是否合理,每个客户端只有一个地址。您可以在模板中手动实现表单,并将类似的内容添加到代码中。

代码语言: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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57968880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档