mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 16:40:03 +03:00
Fix saving reverse relations for Django<3
This commit is contained in:
parent
7eb642b366
commit
6ab2709b25
|
@ -933,12 +933,12 @@ class ModelSerializer(Serializer):
|
||||||
# instance is created
|
# instance is created
|
||||||
info = model_meta.get_field_info(ModelClass)
|
info = model_meta.get_field_info(ModelClass)
|
||||||
many_to_many = {}
|
many_to_many = {}
|
||||||
reverse = []
|
reverse = {}
|
||||||
for field_name, relation_info in info.relations.items():
|
for field_name, relation_info in info.relations.items():
|
||||||
if relation_info.to_many and (field_name in validated_data):
|
if relation_info.to_many and (field_name in validated_data):
|
||||||
many_to_many[field_name] = validated_data.pop(field_name)
|
many_to_many[field_name] = validated_data.pop(field_name)
|
||||||
elif relation_info.reverse and (field_name in validated_data):
|
elif relation_info.reverse and (field_name in validated_data):
|
||||||
reverse.append(field_name)
|
reverse[field_name] = validated_data[field_name]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
instance = ModelClass._default_manager.create(**validated_data)
|
instance = ModelClass._default_manager.create(**validated_data)
|
||||||
|
@ -970,8 +970,9 @@ class ModelSerializer(Serializer):
|
||||||
|
|
||||||
# Save the reverse relations
|
# Save the reverse relations
|
||||||
if reverse:
|
if reverse:
|
||||||
for field_name in reverse:
|
for field_name, value in reverse.items():
|
||||||
getattr(instance, field_name).save()
|
setattr(instance, field_name, value)
|
||||||
|
value.save()
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user