我正在构建一个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
答案 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)