新手在这里。我碰巧有一个超过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行一样好得多。
答案 0 :(得分:3)
如果rec_fields
是包含所有模型字段作为键的字典,则可以执行SOA_detail.objects.create(soa=instance, **rec_fields)