Мне нужно лучшее решение для того, чего я пытаюсь достичь ниже. У меня есть форма, эта форма должна диктует порядок кода для следующих пунктов ...Код заказа 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()
, но это не будет работать, поскольку оно попытается присвоить значение не мак e it first_name = CharField() и т. д.
Как вы можете видеть, я снова делаю это снова для col2, col3 и т. д. и заканчивая «лот» из «if statements».
Есть ли лучший способ, например?
Спасибо.
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
Вы имеете в виду вы пытаетесь заставить свою программу переписать себя во время выполнения? –