首先请原谅我的英语,这不是我的母语。
我需要构建一个表,例如,每行1000行和5个单元格,所以我决定使用Cell和Row模型。
models.py
class Cell(models.Model):
content = models.CharField(max_length=100)
row = models.ForeignKey('Row')
class Row(models.Model):
pass
表格单元格的内容并不重要(在当前阶段,我用随机数据填充它)。
我需要的是能够添加新行。表单应该在每个单元格中都有一个输入字段(它的性质绝对不可忽略)。我更喜欢使用Modelform:
forms.py
class RowForm(forms.ModelForm):
class Meta:
model = Row
fields = ??? <- problem here.
如何获得为每个单元格提供输入字段的Modelform(请记住,将来可能会更改单元格的数量)?我希望我已经非常清楚地表达了我的需求。非常感谢!
答案 0 :(得分:1)
你在想这个。在数据库说话中,单元格是列和行相交的位置。实际上,你不需要创建一个称为单元格的模型。你所需要的只是
class Row(models.Model)
col1 = models.SomeField()
col2 = models.SomeField()
col3 = models.SomeField()
col4 = models.SomeField()
答案 1 :(得分:0)
我通过以下代码得到了我所需要的东西:
<强> forms.py 强>
class RowForm(forms.Form):
cell = forms.CharField(label='Ячейка', max_length=100)
class RowFormSet(BaseFormSet):
min_num = 5
max_num = 5
absolute_max = 5
extra = 0
form = RowForm
can_order = False
can_delete = False
validate_max = False
validate_min = False
def __init__(self, *args, **kwargs):
super(RowFormSet, self).__init__(*args, **kwargs)
for i in range(0, NUMBER_OF_CELLS):
self[i].fields['cell'].label += " %d" % (i + 1)