Django - 多次保存一个表单

时间:2016-05-06 11:12:43

标签: python mysql django forms

我有一个多次使用一个表单的Django视图。表单将关系子组ID保存为外键,将Student id保存为外键。

我遇到的问题是当我尝试将信息保存到数据库时,它只保存最后一条记录。

例如(数据库模型):

 1       858 | Pump      | Iron 
 2        78 | Madagaskar| Thomas      

如果我试图将它们分成单独的组,只有 Madagaskar 他的数据会被保存:

  id | timestamp                  | student_Id_id | subgroup_Id_id |
+----+----------------------------+---------------+----------------+
| 62 | 2016-05-06 10:54:49.022000 |             2 |             91 |

表格如下:

class ApplicationFormaFull1(MultiModelForm):
    form_classes = {
        'sub1': FormSubgroup,
        'sub2': FormSubgroup,
        'stud_sub': FormStudent_in_Subgroup
    }

和我的观点:

sub = form['sub1'].save(commit=False)
sub.student_group = StudentGroup.objects.get(id=element)
sub.number = 1
sub.type = 'Other'
sub.student_count = firstSubgroup
sub.save()

sub1 = form['sub2'].save(commit=False)
sub1.student_group = StudentGroup.objects.get(id=element)
sub1.number = 2
sub1.type = 'Others'
sub1.student_count = secondSubgroup
sub1.save()

if (counter%2==1):
    stud_sub = form['stud_sub'].save(commit=True)
    stud_sub.subgroup_Id = sub
    stud_sub.student_Id = Student.objects.get(id=student)
    stud_sub.save()
else:
    stud_sub = form['stud_sub'].save(commit=True)
    stud_sub.subgroup_Id = sub1
    stud_sub.student_Id = Student.objects.get(id=student)
    stud_sub.save()

总而言之,我希望每个表单都能多次(动态地)保存其信息

也许解决方案是我应该在列表中存储信息并在添加所有表单后逐个保存?

stud_sub = form['stud_sub'].save(commit=False)
stud_sub.subgroup_Id = sub
stud_sub.student_Id = Student.objects.get(id=student)
list.add(stud_sub)
...
for i in list:
    i.save()

其他解决方案使用formset:

ArticleFormSet = formset_factory(ArticleForm, extra=2)
formset = ArticleFormSet(initial=[
    {'title': 'Django is now open source',
      'pub_date': datetime.date.today(),}
 ])

但是我不知道如何更改标题,pub_date以及动态地添加每个到formset。

0 个答案:

没有答案