标签: inline-formset

在我的formset中添加新的内联时,我的日期选择程序停止工作

今天有点奇怪.

我有一个非常基本的项目.一个表单,并添加到我有一个内联表单.这是作者的书.

当表单加载(/ authors/create /)时,我有一个作者姓名,在下面我有一个表格,我可以在那里为该作者添加书籍.

为了能够拥有动态内联(能够在表单上添加或删除),我正在使用http://code.google.com/p/django-dynamic-formset/.

我现在的问题是,当我添加一个新的内联时,内联表单的所有日期选择器(对于日期发布的字段)都停止工作.

我附上了我的示例项目,显示出了什么问题.您可以在此处下载并运行它.

为什么以及如何解决这个问题?

django jquery datepicker inline-formset

2
推荐指数
1
解决办法
1155
查看次数

Django - 更改内联formset textInput大小属性

我有一个只有三个字段的内联formset:

class Estimate_Product_Details(models.Model):
    proposalID = models.ForeignKey(Estimate_Construction, verbose_name='Proposal ID')
    CID = models.ForeignKey(Product, verbose_name = 'CID')
    qty = models.DecimalField(max_digits = 7, decimal_places = 2, verbose_name = 'Quantity')

    def __unicode__(self):
        return u'%s -- %s' % (self.proposalID, self.CID)
Run Code Online (Sandbox Code Playgroud)

然后我从该模型创建一个表单:

class Product_Form(ModelForm):
    class Meta:
        model = Estimate_Product_Details
        fields = ('CID', 'qty')
        widgets = {
            'qty' : forms.TextInput(attrs={'size':30})
            }
Run Code Online (Sandbox Code Playgroud)

我的目标是让qty输入字段非常小(我有30个用于测试).但是,当我通过内联formset渲染此表单时,该属性根本没有设置.这是在我的视图中创建formset:

    pFormSet = inlineformset_factory(Estimate_Construction, Estimate_Product_Details, form = Product_Form)
Run Code Online (Sandbox Code Playgroud)

我哪里错了?为什么qty场地不会变大?

django django-forms inline-formset

2
推荐指数
1
解决办法
5366
查看次数

在Django基于类的视图中保存inlineformset(CBV)

因此,我正在开发一个Web应用程序,该应用程序已在其注册过程中实现了安全性问题.由于我的模型设置方式以及我尝试使用Django基于类的视图(CBV)的事实,我有一些问题,让这一切都干净整合.这是我的模型的样子:

Model.py

class AcctSecurityQuestions(models.Model):
    class Meta:
        db_table = 'security_questions'
    id = models.AutoField(primary_key=True)
    question = models.CharField(max_length = 250, null=False)

    def __unicode__(self):
        return u'%s' % self.question


class AcctUser(AbstractBaseUser, PermissionsMixin):
    ...
    user_questions = models.ManyToManyField(AcctSecurityQuestions, through='SecurityQuestionsInter')
    ...


class SecurityQuestionsInter(models.Model):
    class Meta:
        db_table = 'security_questions_inter'

    acct_user = models.ForeignKey(AcctUser)
    security_questions = models.ForeignKey(AcctSecurityQuestions, verbose_name="Security Question")
    answer = models.CharField(max_length=128, null=False)
Run Code Online (Sandbox Code Playgroud)

这是我目前的观点:

View.py

class AcctRegistration(CreateView):
    template_name = 'registration/registration_form.html'
    disallowed_url_name = 'registration_disallowed'
    model = AcctUser
    backend_path = 'registration.backends.default.DefaultBackend'
    form_class = AcctRegistrationForm
    success_url = 'registration_complete'

def form_valid(self, form):
    context = self.get_context_data() …
Run Code Online (Sandbox Code Playgroud)

django inline-formset django-class-based-views

2
推荐指数
1
解决办法
3367
查看次数

更改非父模型的inlineformset中模型字段的查询集

我正在使用内联formset,并且需要在实例化formset时更改其中一个非父模型的表单字段的查询集.

class Foo(Model):
   name = models.TextField()

class Bar(Model):
   foo = models.ForiegnKey(Foo)
   other_model = models.ForeignKey(OtherModel)

class BarForm(ModelForm):
   class Meta:
      model=Bar


foo = Foo.object.get(id=1)
FormSet = inlineformset_factory(Foo, Bar, form=BarForm)
formset = FormSet(instance=foo)
Run Code Online (Sandbox Code Playgroud)

根据在输入视图代码之前未确定的foo的值,我需要为formForm中的所有表单更改BarForm中'other_model'字段的查询集.有没有办法做到这一点?

python django django-forms inline-formset

2
推荐指数
1
解决办法
1555
查看次数

内联表单工厂-将请求传递给子表单

我面临着一个非常具有挑战性的挑战:

我需要inlineformset_factory将我的计算机连接ParentEntity到我的外键绑定ChildEntities

My ChildEntity包含一个外键关系,我需要过滤每个登录用户-所以我需要在中的请求ChildForm

到目前为止,我已经尝试过:

  • 我尝试使用form=kwarg,但无法传递实例-只是一个类。因此,我无法在此处添加请求。
  • 我尝试使用formset=kwarg,但是当我尝试通过request=request作为kwarg时,inlineformset_factory出现错误(意外的kwarg)

知道我能做什么吗?

谢谢!罗恩

django django-forms inline-formset

2
推荐指数
1
解决办法
1600
查看次数

在内联表单集中使用 Django FileField

在我的应用程序中上传文件时遇到问题。用户提交报告并可以添加附件(通过外键关系)。我已经显示了内联表单,如果我将其留空就可以使用,但是当我尝试上传文件然后提交表单时,我收到了 500 错误。已制作基本报告,但不会保存内联的附件。

表格.py

class ReportForm(forms.ModelForm):
    accidentDate = forms.DateField(widget=SelectDateWidget(
                                   empty_label=("Choose Year",
                                                 "Choose Month",
                                                 "Choose Day"),
                                   ),
                                   label=(u'Accident Date'),
                                   initial=timezone.now())
    claimNumber = forms.CharField(max_length=50,
                                  label=(u'Claim Number'),
                                  required=True)
    damageEstimate = forms.DecimalField(max_digits=6, decimal_places=2,
                                        label=(u'Damage Estimate'))


    description = forms.CharField(widget=forms.Textarea(attrs={'rows': 5,
                                                               'cols': 80}
                                                        ),
                                  label=(u'Description'),
                                  required=True)
    drivable = forms.BooleanField(label=(u'Drivable'), 
                                  required=False)
    receivedCheck = forms.CharField(max_length=30, label=(u'Who Received Check'))
    reported = forms.BooleanField(label=(u'Reported to Insurance Company'), 
                                  required=False)
    reportedDate = forms.DateField(widget=SelectDateWidget(
                                    empty_label=("Choose Year",
                                                 "Choose Month",
                                                 "Choose Day"),
                                ),
                               initial=timezone.now(),
                               label=(u'Date Reported to Insurance'))
    repairsScheduled = forms.DateField(widget=SelectDateWidget(
                                    empty_label=("Choose Year",
                                                 "Choose Month",
                                                 "Choose …
Run Code Online (Sandbox Code Playgroud)

forms django django-forms inline-formset django-file-upload

2
推荐指数
1
解决办法
2624
查看次数

如何使用django formset动态删除对象

Django 说,我应该这样渲染inline formset

{{ formset.management_form }}
{% for form in formset %}
    {{ form.id }}
    {{ form.field_1 }} 
    {{ form.field_2 }}
    <button type="button"> delete </button>
{% endfor %}
<button type="submit"> submit </button>
Run Code Online (Sandbox Code Playgroud)

好的。但是如果我想form动态删除一些表单集对象 ( ) 怎么办?用户按下delete按钮 - 我form从 DOM 中删除,我使用 ajax 删除与form数据库中的对象相关的对象。到目前为止它工作正常。但是当用户点击时submit- 我的 views.py 试图验证表单集:

filled_formset = OrderItemFormSet(request.POST, instance=order)
if filled_formset.is_valid():
Run Code Online (Sandbox Code Playgroud)

并引发错误:

MultiValueDictKeyError at /order/cart/  
"'orderitem_set-0-id'"  
...\market\ordersys\views.py in show_cart  
59.   if filled_formset.is_valid():
Run Code Online (Sandbox Code Playgroud)

我认为这是因为formdjango 显示的对象有一定的规律性(第一种形式有 id = …

python django django-forms inline-formset

2
推荐指数
1
解决办法
5103
查看次数

Django 内联表单集更新模型

我正在绞尽脑汁地尝试让 Django 的表单集在更新模型时正常工作。

我有 2 个模型,Product并且ProductSize. 在添加或编辑 .s 文件时,我使用内联表单集将我的ProductSizes 链接到s 。添加对象很好,但是当我尝试编辑 时,我无法提交表单。我在下面得到输出。ProductProductProduct[{'id': ['This field is required.']}]print

以下是我的看法:

class ProductAdd(AddModelView):
    model = Product
    form_class = UpdateProductForm
    template_name = 'intake_goods_form.jinja'
    title = 'Add Product Type'
    formset_class = ProductSizesFormSet

    def form_valid(self, form):
        obj = form.save()
        formset = self.formset_class(self.request.POST)
        if formset.is_valid():
            formset.instance = obj
            formset.save()
        else:
            print(formset.errors)
            return self.form_invalid(form)
        return super().form_valid(form)

    def get_context_data(self, **kwargs):
        if self.request.POST:
            formset = self.formset_class(self.request.POST, instance=self.object)
        else:
            formset = …
Run Code Online (Sandbox Code Playgroud)

django inline-formset

2
推荐指数
1
解决办法
1903
查看次数

Django 内联表单集将始终创建新对象而不是更新它们

我有 2 个模型First,并且SecondFK 从SecondFirst。我为 2 类创建了一个表单,并为Second. 在模板上,我手动设计了表单,并使用 jQuery,我可以添加Second.

在 UpdateView 上,表单已正确填充,但是当我提交表单时,所有Second实例都会使用新 id 再次创建,而不是更新它们。我仔细检查了 HTML 上是否有name=PREFIX-FORM_COUNT-id具有正确的 id,但 Django 似乎忽略了它。

我正在使用 Django 2.2.12 和 Python 3.6

这是我所做的:

模型.py

class First(models.Model):
    name = models.CharField(max_length=100, null=False)

class Second(models.Model):
    first= models.ForeignKey(First, null=False, on_delete=models.CASCADE)
    number= models.FloatField(null=False, default=0)
Run Code Online (Sandbox Code Playgroud)

表格.py

class FirstForm(forms.ModelForm):

    class Meta:
        model = First
        fields = "__all__"


class SecondForm(forms.ModelForm):
    class Meta:
        model = Second
        fields = "__all__"


SecondsFormset …
Run Code Online (Sandbox Code Playgroud)

python django django-forms formset inline-formset

2
推荐指数
1
解决办法
3142
查看次数

Django内联表单集为每个对象删除

if formset.is_valid():
  values = formset.save(commit=False)
    for v in values:
      v.correct = True
      v.save()
Run Code Online (Sandbox Code Playgroud)

如何删除选中删除的对象?谢谢

python django inline-formset

1
推荐指数
1
解决办法
1420
查看次数