是的,我在使用 Django 时遇到了第一个真正的问题,因为我是新手,我无法弄清楚这一点。
我正在使用Django 适配器(尽管我愿意接受其他建议,但它映射到模型并且效果很好)。无论如何,我想导入数据,但要确保订单是由用户指定的。
这是我目前所拥有的......
表格.py
此表单会显示给用户,然后他们在其中选择哪一列代表其 CSV 上传中的哪个字段。
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')
回到我的 view.py POST 到以下...
if request.method == 'POST':
form = ConfiguratorForm(data=request.POST)
# Try and import CSV
ContactCSVModel.import_data(data=upload.filepath, extra_fields=[
{'value': upload.group_id, 'position': 5},
{'value': upload.uploaded_by.id, 'position': 6}])
这是现在的问题。
class ContactCSVModel(CsvModel):
first_name = CharField()
last_name = CharField()
company = CharField()
mobile = CharField()
group = DjangoModelField(Group)
contact_owner = DjangoModelField(User)
class Meta:
delimiter = ","
dbModel = Contact
update = {'keys': ["mobile", "group"]}
正如您在上面看到的,它目前仅按照上面列出的顺序匹配 first_name、last_name 等,而不是用户指定的顺序。
我怎样才能做到这一点?