0

from 値に基づいて、実行時に以下のモデルを生成する必要があります。

以下は私が達成しようとしているものの例ですが、問題は明らかです.ie [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') 
4

2 に答える 2

2

構築後にクラス オブジェクトにフィールドを追加できます。

def import_data(form, *args, **kw):
    class ContactCSVModel(CsvModel):

         class Meta:
            # ...

    for field in form:
        setattr(ContactCSVModel, field.value(), CharField())

    return ContactCSVModel.import_data(*args, **kw)
于 2013-04-18T11:35:10.020 に答える