У меня есть 2 родственные модели :
class Systems(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=2000, null=True, blank=True)
class Teams(models.Model):
system = models.ForeignKey(Systems, on_delete=models.CASCADE)
name = models.CharField(max_length=200)
description = models.CharField(max_length=2000, null=True, blank=True)
И 2 сериализаторы :
class System_serializer(serializers.HyperlinkedModelSerializer):
id = serializers.ReadOnlyField
class Meta:
model = Systems
fields = ('id', 'name', 'description')
def create(self, validated_data):
return Systems.objects.create(**validated_data)
def update(self, system, validated_data):
system.name = validated_data.get('name', system.name)
system.description = validated_data.get('description', system.description)
system.save()
return system
секунда:
class Team_serializer(serializers.ModelSerializer):
id = serializers.ReadOnlyField
system_id = System_serializer()
class Meta:
model = Teams
fields = ('id', 'system_id', 'name', 'description')
def create(self, validated_data):
return Teams.objects.create(**validated_data)
def update(self, team, validated_data):
team.name = validated_data.get('name', team.name)
team.description = validated_data.get('description', team.description)
team.system_id = validated_data.get('system_id', team.system_id)
team.save()
return team
В сущности 'team' я просто хочу иметь только идентификатор 'System', а не всю 'System'
Как я могу использовать System_serializer для сериализации 'system_id' в объекте 'team'?
Спасибо!
ADD
Я пытался использовать SlugRelatedField:
class Team_serializer(serializers.ModelSerializer):
id = serializers.ReadOnlyField
system_id = serializers.SlugRelatedField(queryset=Systems.objects.all(), slug_field='id')
class Meta:
model = Teams
fields = ('id', 'system_id', 'name', 'description')
Но получил
'int' object has no attribute 'id'
ADD2
Пытался использовать PrimatyKeyRelatedField:
class Team_serializer(serializers.ModelSerializer):
id = serializers.ReadOnlyField
system_id = serializers.PrimaryKeyRelatedField(queryset=Systems.objects.all())
class Meta:
model = Teams
fields = ('id', 'system_id', 'name', 'description')
def create(self, validated_data):
return Teams.objects.create(**validated_data)
, но получил при создании
Field 'id' expected a number but got <Systems: Systems object (2)>.