我需要一个更好的解决方案,以尝试在下面达成目标。我有一个形式,这种形式需要决定了代码以下项目的顺序...Django在课堂上的订购代码
class ContactCSVModel(CsvModel):
first_name = CharField()
last_name = CharField()
company = CharField()
mobile = CharField()
group = DjangoModelField(Group)
contact_owner = DjangoModelField(User)
例如...
class ContactCSVModel(CsvModel):
if form.col1.value == "first_name":
first_name = CharField()
elif form.col1.value == "last_name":
last_name = CharField()
也许
class ContactCSVModel(CsvModel):
[column.col1.value] = CharField()
[column.col2.value] = CharField()
但这不会工作,因为它会尝试分配值不mak e it first_name = CharField()等
正如你所看到的,我最终再次为col2,col3等做了这样的事情,并以'if语句'的'lot'结束。
有没有更好的方法,例如?
谢谢。
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')
这是我不变类,因为它现在是:
def import_data(column, *args, **kw):
# make custom ContactCSVModel
class ContactCSVModel(CsvModel):
# IF column == x
first_name = CharField()
mobile = CharField()
last_name = CharField()
company = CharField()
group = DjangoModelField(Group)
contact_owner = DjangoModelField(User)
class Meta:
delimiter = ","
dbModel = Contact
update = {'keys': ["mobile", "group"]}
return ContactCSVModel.import_data(*args, **kw)
你可以添加更多关于你想要实现的细节吗?我不知道更改订单代码会为您出现什么。另外,查看了[Django模型字段参考](https://docs.djangoproject.com/en/1.5/ref/models/fields/),我找不到任何类似DjangoModelField的东西。 –
我想要做这样的事情column.col1.value = CharField(),但这只是分配值,我想它打印它的值first_name = CharField()这是col1的值 – Prometheus
你的意思是你试图让你的程序在运行时重写自己? –