[这是前一个问题的重构,我希望这个问题更清楚。]
我有一个活动模型,它包含一个数字,并且取决于一个人和一个类别。
class Activity( models.Model ):
person = models.ForeignKey( Person ) # approx 80 people
category = models.ForeignKey( Category ) # approx 6 categories
value = models.FloatField( )
用户希望在顶部和侧面有一个带有类别的表格,然后在表格中有每个单元格中的值字段。
目前我的表格是:
class MonthlyActivityForm(forms.Form):
def __init__(self, *args, **kwargs ):
affiliations = kwargs.pop('affiliations')
point_categories = kwargs.pop('point_categories')
super(MonthlyActivityForm, self).__init__(*args, **kwargs)
for pc in point_categories:
for a in affiliations:
self.fields['pc-%d-pe-%d' % (pc.id, a.person.id)] = forms.FloatField()
我无法看到如何在常规Django中执行表格字段表(很好)。我认为它归结为表单构建,它将影响模板和视图处理的效率。
首先想到的是:
1)为每个人创建一个FloatField,类别创建一个模板来创建一个如上所述的表(这部分似乎比它应该更难)
2)在视图中,在一个有效的表单上运行返回表单中的每个FloatField并保存所有更改
所以,我想有两个问题:
1)有没有一种更有效的方法来创建FloatFields表,而不是试图在模板中找出循环来在td中创建一个包含FloatFields的表?
2)如何将person.id和category.id存储在FloatField中,这样当我回到具有有效表单的视图时,我可以创建/更新正确的Activity条目? (或者我可以从每个FloatField的表单键中获取它吗?)
我对Django来说相当新,但似乎应该稍微容易一些。我必须在这里遗漏一些东西。