Django 一个模板中表单的动态值

Django 一个模板中表单的动态值,django,Django,我尝试制作一个django应用程序来创建账单 我有两张桌子,比尔,送货 一张账单最多可交付5次 现在我要一张账单和一张快递单。要添加或删除传递,我需要一个按钮 我使用的是基于类的视图。 如何在django实现这一点 我找到了django的额外视图,但我无法让它工作。 我也看到了这个链接,但这不是动态的和基于函数的视图 models.py class Bill(models.Model): company = models.ForeignKey(Bioenergie) custom

我尝试制作一个django应用程序来创建账单

我有两张桌子,比尔,送货 一张账单最多可交付5次

现在我要一张账单和一张快递单。要添加或删除传递,我需要一个按钮

我使用的是基于类的视图。 如何在django实现这一点

我找到了django的额外视图,但我无法让它工作。 我也看到了这个链接,但这不是动态的和基于函数的视图

models.py

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>