Symtoms
Direct assignment to the reverse side of a related set is prohibited.
Use related.set() instead.
Cause
class Meta:
model = Contract
fields = [ ... , 'related']
rules_data = validated_data.pop('rules')
contract = Contract.objects.create(**validated_data)
getattr(self.get_queryset(), name)(**args, **kwargs)
Solution
필드를 일일이 지정하고, 따로 빼서 set() 으로 대입해보니
contract = Contract.objects.create(
name = validated_data['name'],
email = validated_data['email'],
date_from = validated_data['date_from'],
date_to = validated_data['date_to']
)
contract.related.set(validated_data.related)
set() 메소드에서 에러가 나서 보니
'dict' object has no attribute 'related'
리스트로 감싸서 제공
contract.related.set(validated_data['related'])