Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何提供适当的请求主体来序列化Django通用外键?_Python_Django_Django Rest Framework_Jwt_Postman - Fatal编程技术网

Python 如何提供适当的请求主体来序列化Django通用外键?

Python 如何提供适当的请求主体来序列化Django通用外键?,python,django,django-rest-framework,jwt,postman,Python,Django,Django Rest Framework,Jwt,Postman,我有一个叫做“电话”的通用型号: (my_project/apps/phones/models.py) 我还有一个叫做“客户机”的模型: (my_project/apps/clients/models.py) 我还有一个用于“客户端”的序列化程序: (my_project/apps/clients/serializers.py) 我遵循了drf documentation(),据我所知,我需要将自定义类放在同一个文件中,因此我的clients/serializers.py是这样的: (my_pr

我有一个叫做“电话”的通用型号:

(my_project/apps/phones/models.py)

我还有一个叫做“客户机”的模型:

(my_project/apps/clients/models.py)

我还有一个用于“客户端”的序列化程序:

(my_project/apps/clients/serializers.py)

我遵循了drf documentation(),据我所知,我需要将自定义类放在同一个文件中,因此我的clients/serializers.py是这样的:

(my_project/apps/clients/serializers.py)

对于请求,我正在使用PostMan,因此以下是我创建具有电话号码的新客户端的请求:


但它没有任何作用,可以成功创建新客户端,但它们不包含任何电话号码,请帮助

您可以将相关字段添加到序列化程序字段中

class ClientSerializer(ModelSerializer):
    id = IntegerField(read_only=True)
    employee_id = PrimaryKeyRelatedField(queryset=Employee.objects.all(), source='employee', required=True)
    title = CharField(required=True)
    phone = PhoneObjectRelatedField()
@Madi7更新
phone=PhoneObjectRelatedField(queryset=phone.objects.all())

很好!但是您在哪里使用了这个
PhoneObjectRelatedField
??在
ClientSerializer
字段phone
phone=PhoneObjectRelatedField()
我试过了,但是在我的views.py中:'serializers.is_valid()'返回False,实际上我不得不这样写:phone=PhoneObjectRelatedField(queryset=phone.objects.all),因为django说queryset是必需的好的,尝试一下并用结果通知我我在ClientSerializer中添加了:phone=PhoneObjectRelatedField(queryset=phone.objects.all()),我向邮递员发出了请求,如:phone.owner\u name和phone.number,但我的views.py会引起问题,serializer.is\u valid()现在返回=False((好的,你得到了什么,我以前没有接触过这个,所以我们决定去找她,我们可以去聊天吗?
class Client(Model):
    employee = ForeignKey(Employee, on_delete=CASCADE)
    title = CharField(max_length=50)

    phones = GenericRelation(Phone)
class ClientSerializer(ModelSerializer):
    id = IntegerField(read_only=True)
    employee_id = PrimaryKeyRelatedField(queryset=Employee.objects.all(), source='employee', required=True)
    title = CharField(required=True)
class ClientSerializer(ModelSerializer):
    id = IntegerField(read_only=True)
    employee_id = PrimaryKeyRelatedField(queryset=Employee.objects.all(), source='employee', required=True)
    title = CharField(required=True)

class PhoneObjectRelatedField(RelatedField):
    def to_representation(self, value):
        if isinstance(value, Client):
            serializer = ClientSerializer(value)
        else:
            raise Exception('Unexpected type of phone_object')
        return serializer.data
class ClientSerializer(ModelSerializer):
    id = IntegerField(read_only=True)
    employee_id = PrimaryKeyRelatedField(queryset=Employee.objects.all(), source='employee', required=True)
    title = CharField(required=True)
    phone = PhoneObjectRelatedField()