django:如何在具有松散形式的模型表单中包含外键的内联formset

时间:2016-11-09 19:55:57

标签: python django django-models django-forms django-crispy-forms

例如,我有以下模型:

class Project(models.Model):
    description = models.CharField(max_length = 200, null=True)
    login_date =  models.DateField(null=True)
    login_by = models.CharField(max_length = 200, null=True)
    notes= models.CharField(max_length = 200, null=True)

class Sample(models.Model):
    project = models.ForeignKey(Project, on_delete = models.CASCADE, null=True)
    serial_number = models.CharField(max_length = 200, null=True)
    location = models.CharField(max_length = 200)    

class ProjectForm(ModelForm):
    login_date=forms.DateField(widget=DateWidget(attrs={'id':"login_sample"}, usel10n = True, bootstrap_version=3), initial=datetime.date.today)
    in_notes = forms.CharField(widget=forms.Textarea)


    helper = FormHelper()
    helper.layout = Layout(
        Div(
            'description',
            'login_date',
            'login_by',
            'in_notes',
            ButtonHolder(
                HTML("<button type='submit' class='save btn btn-default' name = 'projectform'>Save</button>"),
            ), 
        )
    )

    class Meta:
        model = Project
        fields = ['description', 'login_date','login_by',
        'in_shipping_method_tracking_number','in_notes']

class SampleDetailForm(ModelForm):
    helper = FormHelper()
    helper.layout = Layout(
        Div(
            'serial_number',
            'location',
            ButtonHolder(
                HTML("<button type='submit' class='save btn btn-default' name = 'sampleform'>Save</button>"),
            ),
        )
    )

    class Meta:
        model = Sample
        fields = ['octa_number', 'serial_number', 'pctest_number', 'location',]

这就是我目前设置模型和表单的方式。

我想知道如何创建一个不仅有自己的字段的ProjectForm,还有SampleForm的内联formset,可以在模型表单中添加/删除多个样本,就像我们在管理站点中一样。我也很高兴知道如何处理视图中的保存以及在模板中渲染。

TIA

1 个答案:

答案 0 :(得分:0)

我猜你正在寻找这个,https://docs.djangoproject.com/es/1.10/topics/db/examples/

在这里,您可以找到模型关系API用法的示例:

多对多关系

多对一关系

一对一关系