def load_field(self, fieldname, val, zf, version):
if val is None:
return val, False
try:
field = self.model._meta.get_field(fieldname)
except models.fields.FieldDoesNotExist:
field = None
deferr = False
if field:
if isinstance(field, models.DateTimeField):
val = timezone.make_aware(
datetime.datetime.strptime(val, DATETIME_FORMAT),
timezone.utc)
elif isinstance(field, models.DateField):
val = datetime.date.strptime(val, DATE_FORMAT)
elif isinstance(field, models.ManyToManyField):
val = self.load_many(field.related_model, val, zf, version)
deferr = True
elif isinstance(field, models.ManyToOneRel):
val = self.load_many(field.related_model, val, zf, version,
commit=False)
deferr = True
elif isinstance(field, models.ForeignKey):
val = load_model_instance(field.rel.to, val, zf, version)
elif isinstance(field, GenericRelation):
val = self.load_many(field.rel.to, val, zf, version,
commit=False)
deferr = True
elif isinstance(val, list):
rel_model = getattr(self.model, fieldname).related.related_model
val = self.load_many(rel_model, val, zf, version, commit=False)
deferr = True
return val, deferr
评论列表
文章目录