I've got Membership class which contains 3 ForeginKey fields. These FK always have to reference to already existing objects so I'm wondering how simplify create and update methods inside MembershipSerializer in order to assign these fields using only keys passed in request.
Here's MembershipSerializer class code:
class MembershipSerializer(serializers.ModelSerializer):
user = UserSerializer(many=False)
club = ClubSerializer(many=False)
inClubRole = InClubRoleSerializer(many=False)
class Meta:
fields=(
'user',
'club',
'inClubRole',
)
model = Membership
def create(self, validated_data):
print(validated_data)
user_data = User.objects.get(id=validated_data.pop('user'))
club_data = Club.objects.get(id=validated_data.pop('club'))
inClubRole_data = InClubRole.objects.get(id=validated_data.pop('inClubRole'))
instance = Membership.objects.create(**validated_data)
instance.user=user_data
instance.club = club_data
instance.inClubRole = inClubRole_data
return instance
Since User, Club, and InClubRole models already exists I want to simplify POST and UPDATE for Membership class just by passing Primary Keys like that:
{
"user": 1,
"club": 1,
"inClubRole": 4
}
However create methods still expects passing every field related with User, Club and InClubRole classes. How to fix that? Or maybe there is a simplier way to handle with it?