有没有简短的方法来做Django objects.create()

时间:2013-09-17 01:20:53

标签: django object django-models

新手在这里。我碰巧有一个超过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行一样好得多。

1 个答案:

答案 0 :(得分:3)

如果rec_fields是包含所有模型字段作为键的字典,则可以执行SOA_detail.objects.create(soa=instance, **rec_fields)