相关疑难解决方法(0)

具有内联模型表单或formset的基于类的基于django的视图

我有以下型号:

class Bill(models.Model):
    date = models.DateTimeField(_("Date of bill"),null=True,blank=True)

class Item(models.Model):
    name = models.CharField(_("Name"),max_length=100)
    price = models.FloatField(_("Price"))
    quantity = models.IntegerField(_("Quantity"))
    bill = models.ForeignKey("Bill",verbose_name=_("Bill"),
                             related_name="billitem")
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的:

from django.forms.models import inlineformset_factory
inlineformset_factory(Bill, Item)
Run Code Online (Sandbox Code Playgroud)

然后通过标准视图处理.

现在我想知道,如果有一种方法可以实现相同的(意思是:使用内联来添加/编辑属于账单的项目)使用基于类的视图(而不是管理界面).

django inline-formset django-class-based-views

55
推荐指数
3
解决办法
3万
查看次数

Django formsets:首先要求吗?

这些表格集表现出我想要的完全相反的行为.

我的观点设置如下:

def post(request): # TODO: handle vehicle formset
    VehicleFormSetFactory = formset_factory(VehicleForm, extra=1)
    if request.POST:
        vehicles_formset = VehicleFormSetFactory(request.POST)
    else:
        vehicles_formset = VehicleFormSetFactory()
Run Code Online (Sandbox Code Playgroud)

我的模板看起来像这样:

    <div id="vehicle_forms">
        {{ vehicles_formset.management_form }}
        {% for form in vehicles_formset.forms %}
            <h4>Vehicle {{forloop.counter}}</h4>
            <table>
                {% include "form.html" %}
            </table>
        {% endfor %}
    </div>
Run Code Online (Sandbox Code Playgroud)

这样它最初只生成一个表单,就像我想要的那样.但是我想要一个表格!

当我使用JavaScript动态添加空白表单时,需要vehicles_formset.empty_form所有这些额外的表单,这是我不想要的.

来自文档:

formset足够聪明,可以忽略未更改的额外表单.

这是第一种形式展示的行为(不是我想要的),而不是额外形式展示的行为(我想要的).

是否有一些我可以改变的属性,至少需要一个表格?

python django django-forms

35
推荐指数
3
解决办法
1万
查看次数