我正在使用Django Rest Framework和AngularJS。 我有任务和客户端模型。 客户端模型是任务的外键。
mInside serializers.py , ClientSerializer()如下所示:
class ClientBasicSerializer(serializers.ModelSerializer):
class Meta:
model = Client
fields = ('id', 'name', 'gender')
TaskSerializer()(不工作)如下所示:
class TaskSerializer(serializers.ModelSerializer):
client = serializers.PrimaryKeyRelatedField(read_only=True)
client_data = serializers.ClientSerializer()
class Meta:
model = Task
可以看出:
但是,它不起作用,因为Django客户端模型中没有定义client_data字段(我想我不应该定义它)。
如何将其定义为 TaskSerializer()中的自定义字段,并仍然利用 ClientSerializer()?
答案 0 :(得分:0)
您只能使用client = serializers.ClientSerializer()
然后,您需要重写create
方法,以便将客户端实例分配给创建的任务实例。
class TaskSerializer(serializers.ModelSerializer):
client = serializers.ClientSerializer()
class Meta:
model = Task
def create(self, validated_data):
client_id = validated_data['client'] # this should be client id
client = Client.objects.get(id=client_id)
del(validated_data['client'])
task = Task.objects.create(**validated_data)
task.client = client
task.save()
return save.