Django不会自动处理相关模型实例的构造。
在你的情况下,我会做以下事情。
# Assume "data" holds your data structure
stats_data = data.pop('stats')
os_data = data.pop('os') # Clashes with os module - please don't
sysinfo_data = data.pop('sysinfo')
# store the FK in data
data['stats'] = stats(**stats_data)
data['os'] = os(**os_data)
data['sysinfo'] = sysinfo(**sysinfo_data)
host_instance = Host(**data)
from django.db import transaction
with transaction.atomic():
# Code from above
为了进一步提高代码的可读性,您应该遵循PEP8和Django代码指南。这也使得帮助你更容易,否则人们可能会对什么是模型、方法等感到困惑。
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/#model-style
例如:Modelnames应该是
CamelCase