1

新手来了 我碰巧有一个包含 50 多个字段的创建对象,有没有写创建对象的捷径?任何建议都非常感谢。谢谢

SOA_detail.objects.create(
            soa                 =instance, 
            sitename            =rec_fields['sitename'], 
            site_addr           =rec_fields['site_addr'], 
            call_sign           =rec_fields['call_sign'], 
            no_years            =rec_fields['no_years'], 
            channel             =rec_fields['channel'], 
            ppp_units           =rec_fields['ppp_units'], 
            rsl_units           =rec_fields['rsl_units'], 
            freq                =rec_fields['freq'], 
            ...
            duplicate_fee       =rec_fields['duplicate_fee'])

答。jproffitt的指导之后。这就是我所做的。假设: header_name =[]是字段名称的动态列表。SOA_detail 是我的模型。 soa_detail = []是价值观。

   for i in range(len(header_name)):
       for model_field in SOA_detail._meta._fields():
           # check every header_name if it is in model field name
           if header_name[i] == model_field.name:
               # update dict if found
               rec_fields[header_name[i]] = soa_detail[i]  
   SOA_detail.objects.create(soa=instance, **rec_fields)

这比我原来包含近 100 行的脚本要好得多。

4

1 回答 1

2

如果rec_fields是一个所有模型字段作为键的字典,你可以这样做SOA_detail.objects.create(soa=instance, **rec_fields)

于 2013-09-17T01:33:44.223 回答