需要一个用于构建具有多个列的Django表单字段的示例

时间:2015-10-19 02:09:16

标签: python django forms

我正在构建一个Django表单,其中每个字段可以有多个用户输入的列。例如,让用户每周输入体重

        week1 week2 week3 week4
weight   120   125   123   130

我的原始代码简化如下:

models.py

class Person(models.Model):
     weight = models.PositiveIntegerField(default=0)

forms.py

class PersonCreateForm(forms.ModelForm):
     class Meta:
         model = Person

views.py

class PersonCreateView(CreateView):
     model = Person
     template_name = 'add_person.html'
     form_class = PersonCreateForm

从django文档中,似乎需要MultiValueField?还是formset工厂? (请举例)https://docs.djangoproject.com/en/1.8/ref/forms/fields/#multivaluefield

1 个答案:

答案 0 :(得分:0)

我不认为我会按照你现在的方式去做。而不是有许多不同的"周"作为列,单个"周"更有意义。列并将每个条目作为自己的行。想象一下,让人们每周输入体重5年。这将给你260列!

我会尝试这样的事情:

models.py

class Person(models.Model):
    user = models.ForeignKey(User) #many to one relationship to User table
    week = models.PositiveIntegerField()
    weight = models.PositiveIntegerField()

通过这种方式设计数据库,您可以快速轻松地执行各种查询,例如:查询每个人并查看他们的所有数据,让每个用户在特定的一周内完成。

views.py

current_user = request.user
Person.objects.filter(user=current_user)

    OR

current_user = request.user
Person.objects.filter(week=4)