Doğrudan değil soruya bir cevap, ama bu kod bana doğru cevap içine güzelce kurtarmak dicts yaratılmasına yardım bulabilirsiniz. Bu veriler json'a aktarılacaksa yapılan tür dönüşümleri gereklidir.
umarım bu yardımcı olur:
#mod is a django database model instance
def toDict(mod):
import datetime
from decimal import Decimal
import re
#Go through the object, load in the objects we want
obj = {}
for key in mod.__dict__:
if re.search('^_', key):
continue
#Copy my data
if isinstance(mod.__dict__[key], datetime.datetime):
obj[key] = int(calendar.timegm(ts.utctimetuple(mod.__dict__[key])))
elif isinstance(mod.__dict__[key], Decimal):
obj[key] = float(mod.__dict__[key])
else:
obj[key] = mod.__dict__[key]
return obj
def toCsv(mod, fields, delim=','):
import datetime
from decimal import Decimal
#Dump the items
raw = []
for key in fields:
if key not in mod.__dict__:
continue
#Copy my data
if isinstance(mod.__dict__[key], datetime.datetime):
raw.append(str(calendar.timegm(ts.utctimetuple(mod.__dict__[key]))))
elif isinstance(mod.__dict__[key], Decimal):
raw.append(str(float(mod.__dict__[key])))
else:
raw.append(str(mod.__dict__[key]))
return delim.join(raw)
sayesinde, yapmak isteyen tam olarak budur. Ayrıca, bir not sadece yazıya dayalı olarak. Model.objects.create (** data_dict) kullanırken kaydetme yöntemini çağırmanız gerekmez. Muhtemelen bunu zaten biliyorsunuz ama sadece bir kafa. –
Daha önce “objects.create” yöntemini kullanmamıştım, bu yüzden bana yeni bir şey öğrettin. – Alasdair
ayrıca objects.create, yeni modele bir işaretçi döndürür, geçerli bir pk ile doldurulur. Bu, ilgili modelleri oluşturmak için hemen kullanabileceğiniz anlamına gelir. –