示例#1
0
 def upsert_item(cls, item: Union[DefaultDict, Model], parent: Model,
                 serializer: ModelSerializer, m2m: Manager):
     if m2m is not None:
         m2m.add(item)
     else:
         data = cls.clean_data(item)
         validated = serializer(data=data)
         if validated.is_valid():
             try:
                 validated.instance = serializer.Meta.model.objects.get(
                     pk=data['id'])
             except (KeyError, serializer.Meta.model.DoesNotExist):
                 pass
             instance = validated.save()
             instance.owner = parent
             instance.save()
         else:
             raise ValidationError(validated.errors)