Django 一个模板中表单的动态值
我尝试制作一个django应用程序来创建账单 我有两张桌子,比尔,送货 一张账单最多可交付5次 现在我要一张账单和一张快递单。要添加或删除传递,我需要一个按钮 我使用的是基于类的视图。 如何在django实现这一点 我找到了django的额外视图,但我无法让它工作。 我也看到了这个链接,但这不是动态的和基于函数的视图 models.pyDjango 一个模板中表单的动态值,django,Django,我尝试制作一个django应用程序来创建账单 我有两张桌子,比尔,送货 一张账单最多可交付5次 现在我要一张账单和一张快递单。要添加或删除传递,我需要一个按钮 我使用的是基于类的视图。 如何在django实现这一点 我找到了django的额外视图,但我无法让它工作。 我也看到了这个链接,但这不是动态的和基于函数的视图 models.py class Bill(models.Model): company = models.ForeignKey(Bioenergie) custom
class Bill(models.Model):
company = models.ForeignKey(Bioenergie)
customer = models.ForeignKey(Customer)
price = models.DecimalField(max_digits=5,decimal_places=2)
bill_number = models.CharField(max_length=10, null=True)
delivery_date = models.DateField()
date = models.DateField(null=True)
class Delivery(models.Model):
billing_choises = (('1', 'Menge'),
('2', 'Gewicht/Feuchtigkeit')
)
option = models.CharField(choices=billing_choises, default=1, max_length=20)
amount = models.PositiveIntegerField(blank=True, null=True)
humidity = models.SmallIntegerField(blank=True, null=True)
weight = models.DecimalField(blank=True, null=True, decimal_places=2, max_digits=5)
bill = models.ForeignKey(Bill)
蓝色:表格
格雷:按钮你的问题有两个: 使Django在单个视图上使用窗体和窗体集 制作表单集JavaScripty tm 嗯 1在视图上同时显示窗体和窗体集 通常这将包括旧式的基于函数的视图,因为基于类的视图不支持多个表单,也不支持表单集,更不用说一起使用了。比如说,你可以使用UpdateView,然后手动让它处理一个表单集,但那太难看了,最好还是一直使用老式视图,IMHO 但是!多亏了它,我们可以做这样的事情: forms.py: views.py: bill_form.html:
塔达阿!剩下要做的就是添加一些CSS…您的问题有两个: 使Django在单个视图上使用窗体和窗体集 制作表单集JavaScripty tm 嗯 1在视图上同时显示窗体和窗体集 通常这将包括旧式的基于函数的视图,因为基于类的视图不支持多个表单,也不支持表单集,更不用说一起使用了。比如说,你可以使用UpdateView,然后手动让它处理一个表单集,但那太难看了,最好还是一直使用老式视图,IMHO 但是!多亏了它,我们可以做这样的事情: forms.py: views.py: bill_form.html:
塔达阿!剩下要做的就是添加一些CSS…您可以使用javascript在模板中实现这一点 希望这有助于:
您可以使用javascript在模板中实现这一点 希望这有助于:
你能介绍一下你的模型并解释一下你尝试了什么吗?我现在不能写一个完整的答案,但我建议你看看。或者更好,如果你不想写所有的东西,那么至少有两个项目可以满足你的需要:和。你也可以阅读这些问题,了解更多信息:你能给你的模型雪上加霜,解释一下你尝试了什么吗?我现在不能写一个完整的答案,但我建议你看看。或者更好,如果你不想写所有的东西,至少有两个项目可以满足你的需要:和。你也可以阅读这些问题以获得更多信息:非常感谢。这对我来说很好。这是我的第一个django项目,如果没有您的帮助,我将无法完成。谢谢。这对我来说很好。这是我第一个django项目,如果没有你的帮助,我将无法完成这项工作
from extra_views import InlineFormSet
class DeliveryInlineFormSet(InlineFormSet):
model = Delivery
extra = 2 # we'll need to make it "0" for the JS later on
from extra_views import CreateWithInlinesView, UpdateWithInlinesView
class CreateBillView(CreateWithInlinesView):
model = Bill
inlines = [DeliveryInlineFormSet, ]
success_url = reverse_lazy('bills')
class UpdateBillView(UpdateWithInlinesView):
model = Bill
inlines = [DeliveryInlineFormSet, ]
success_url = reverse_lazy('bills')
<form method="POST" action="">
{{ form }}
{% for formset in inlines %}
<hr />
{# we're going to take advantage of the fact that we know there is only one inline #}
<h3>Deliveries</h3>
{{ formset.management_form }}
{% for subform in formset %}
<div class="subform">
{{ subform }}
</div>
{% endfor %}
{# we'll add some JS here #}
{% endfor %}
<div>
<hr />
{% csrf_token %}
<input type="submit" value="Save" name="save" />
</div>
</form>
<script type="text/javascript">
$(function(){
$('.subform').formset({
prefix: '{{ formset.prefix }}'
});
});
</script>