覆盖ModelForm类中的保存方法

时间:2019-08-25 18:40:19

标签: django

我正在尝试在ModelForm类中重写save方法来处理用户输入字段,创建一些表单实例并将其保存到DB。     我有一个包含很多字段的表单,它将无法有效使用表单集。这就是为什么我希望用户可以在Xfield中输入类似10#15的内容,然后save()将处理Xfield值为10、11、12、13、14、15的6个表单实例并保存该实例。     我尝试覆盖ModelForm类的保存方法,但是有一个麻烦:它仅保存最后一条记录。     模型有很多领域,我继承了一些简单的模型。在这种情况下,bulk_create()方法不起作用。

    class Receive():
      field1...
      field2...
    class Use():
      field1
      field2
    class Record(Receive, Use)
      fieldX...
      fieldY...

    class RecordForm(forms.ModelForm):
        class Meta:
            model = Record
            fields = '__all__'
         def save(self):
            check_fields = ('name', 'serial', 'exemplar', 'kit')
            fields_and_values_set = []
            for field in check_fields:
                ...
            instance = super(RecordForm, self).save(commit=False) 
            if fields_and_values_set:
                import itertools
                for fields in itertools.product(*fields_and_values_set):
                    for data in fields:
                        field, val = data.split('#')
                        setattr(instance, field, val)
                    instance.save()
                    instance.pk = None
            else:
                instance.save()

我想在ModelForm类中保存多个实例,并且我不希望将save方法移动到view.py或model.py进行简洁的设计。 请帮助我,我做错了什么?

0 个答案:

没有答案
相关问题