我需要在運行時根據from值生成以下模型。在運行時生成代碼
下面是什麼,我想acheive一個例子,但問題是明確的,即[field.value] ...
def import_data(form, *args, **kw):
class ContactCSVModel(CsvModel):
for field in form:
[field.value] = CharField()
class Meta:
delimiter = ","
dbModel = Contact
update = {'keys': ["mobile", "group"]}
return ContactCSVModel.import_data(*args, **kw)
所以上面的代碼看起來像這樣它生成後(如果它是類型化的靜態代碼)....
def import_data(form, *args, **kw):
class ContactCSVModel(CsvModel):
first_name = CharField()
mobile = CharField()
last_name = CharField()
class Meta:
delimiter = ","
dbModel = Contact
update = {'keys': ["mobile", "group"]}
return ContactCSVModel.import_data(*args, **kw)
我怎樣才能[field.value]
在我需要它的工作方式?我曾經看過像setattr()這樣的東西,但我不認爲這就是我所追求的。
Forms.py參考...
COL_CHOICES = [
('NONE', 'No Import'),
('first_name', 'First Name'),
('last_name', 'Last Name'),
('company', 'Company'),
('mobile', 'Mobile Number'),
('email', 'Email Address'),
]
class ConfiguratorForm(forms.Form):
col1 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
col2 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
col3 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
col4 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
col5 = forms.TypedChoiceField(choices=COL_CHOICES, initial='first_name')
您是否想說在運行時之前不知道CSV字段? – adrianp
我讓用戶指定字段屬於哪個列。我將添加我的表單,以便更有意義。 – Prometheus
'setattr(ContactCSVModel,field.value,CharField())'是你正在尋找的構造。 – millimoose