我正在尝试在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进行简洁的设计。 请帮助我,我做错了什么?