表格创建,模板显示和视图处理

时间:2014-08-22 13:36:56

标签: django django-forms django-templates django-views

[这是前一个问题的重构,我希望这个问题更清楚。]

我有一个活动模型,它包含一个数字,并且取决于一个人和一个类别。

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来说相当新,但似乎应该稍微容易一些。我必须在这里遗漏一些东西。

1 个答案:

答案 0 :(得分:0)

使用formsets可以简化这一过程。在这种情况下,我可能每个用户有一个表单,包含动态创建的所有类别字段,但formset将负责为每个用户实例化这些表单之一。