Không trực tiếp một câu trả lời cho câu hỏi, nhưng tôi tìm thấy mã này đã giúp tôi tạo ra dicts rằng lưu độc đáo vào câu trả lời đúng. Các loại chuyển đổi được thực hiện là bắt buộc nếu dữ liệu này sẽ được xuất sang json.
Tôi hy vọng điều này sẽ giúp:
#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)
Nguồn
2015-10-01 23:36:23
Cảm ơn, đó là chính xác những gì tôi đang tìm kiếm để làm. Ngoài ra, như một lưu ý phụ chỉ dựa trên bài viết của bạn. Bạn không phải gọi phương thức lưu khi sử dụng Model.objects.create (** data_dict). Bạn có thể đã biết điều này nhưng chỉ là một người đứng lên. –
Tôi đã không sử dụng phương pháp 'objects.create' trước đây, vì vậy bạn đã dạy tôi điều gì đó mới mẻ. – Alasdair
cũng objects.create trả về một con trỏ đến mô hình mới, với một pk hợp lệ điền vào. Điều này có nghĩa là bạn có thể sử dụng ngay lập tức nó để xây dựng các mô hình liên quan. –