ここの初心者。たまたま 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'])
答え。jprofitt
からのガイドの後。これが私がしたことです。以下を前提としています:
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 行で構成される元のスクリプトよりもはるかに優れています。