我有一个名为field_1
,field_2
的100个相同字段的模型,依此类推。
是否有方法在循环中定义这些字段(只是为了避免编写和维护100行)?
也就是说,现在我必须分别命名每个字段:
class MyModel(models.Model):
field_1 = models.CharField(...)
field_2 = models.CharField(...)
field_3 = models.CharField(...)
field_4 = models.CharField(...)
field_5 = models.CharField(...)
...
我想要像:
class MyModel(models.Model):
for i in range(1, 101):
eval("field_%d = models.CharField(...)"%i)
但是,当然,我不喜欢eval
。
任何提示?
注意 我需要这样一个模型,因为我正在从CSV / Excel中进行两步输入:首先,我将Excel行放入此表,然后处理表并在实际应用程序中导入数据(我使用的是ForeignKeys,如所建议的)
答案 0 :(得分:3)
答案 1 :(得分:0)
老实说,我没有看过这个或使用它,但请查看 this snippet 。这都是关于CSV导入的。
您的数据是什么样的?如果它像大多数Excel工作表一样,则字段在列中,数据在行中。在这种情况下,您可能不需要模型中的100个字段,为每个列创建一个字段
+-----+---------+----------+-------+
| id | name | address | phone |
+-----+---------+----------+-------+
| 1 | person1 | blah | foo |
| ... | ... | ... | ... |
| 100 |person100| bar | baz |
例如,此数据只需要3个字段(如果明确定义了ID,则为4个字段),您不需要(也不应该)为每行定义100个字段。现在,如果你有100列数据,那么可能有理由想要自动化,但是通用命名字段似乎......不太有用。因此,如果数据始终采用相同的格式(就列而言),则可能值得将腿部工作放入描述性模型字段中。