Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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 尝试获取序列化程序上“phone_number”字段的值时获取AttributeError_Python_Django_Django Models_Serialization_Django Rest Framework - Fatal编程技术网

Python 尝试获取序列化程序上“phone_number”字段的值时获取AttributeError

Python 尝试获取序列化程序上“phone_number”字段的值时获取AttributeError,python,django,django-models,serialization,django-rest-framework,Python,Django,Django Models,Serialization,Django Rest Framework,AttributeError:尝试获取序列化程序ListBusCompanyStaff序列化程序上的字段电话号码的值时,获取了AttributeError。 基本上我有两种型号User和BusCompanyStaff,User由电话号码字段组成BusCompanyStaff由以下型号字段组成 class BusCompanyStaff(BaseModel): user = models.OneToOneField( BusCompanyUser, on_d

AttributeError:尝试获取序列化程序
ListBusCompanyStaff序列化程序
上的字段
电话号码
的值时,获取了AttributeError。 基本上我有两种型号
User
BusCompanyStaff
User
由电话号码字段组成BusCompanyStaff由以下型号字段组成

class BusCompanyStaff(BaseModel):
    user = models.OneToOneField(
        BusCompanyUser,
        on_delete=models.CASCADE
    )
    position = models.ForeignKey(
        StaffPosition,
        on_delete=models.SET_NULL,
        null=True,
        related_name='position'
    )
    created_by = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        related_name='created_by'
    )
    staff_of = models.ForeignKey(
        BusCompany,
        on_delete=models.CASCADE
    )
我基本上想列出BusCompany的特定BusCompanyStaff,所以这是我一直尝试的序列化程序

class ListBusCompanyStaffSerializer(serializers.ModelSerializer):
    position = serializers.CharField()

    class Meta:
        model = BusCompanyStaff
        fields = (
            'id',
            'phone_number',
            'position',
            'email',
        )
这是一个明确的错误,因为BusCompanyStaff不包含电话号码字段,但要求输入
用户
电话号码和电子邮件 下面是我在views.py和usecases.py中的其余代码

class ListBusCompanyStaffUseCase(BaseUseCase):
    def __init__(self, bus_company: BusCompany):
        self._bus_company = bus_company
    def execute(self):
        self._factory()
        return self._bus_company_staffs

    def _factory(self):
        self._bus_company_staffs = BusCompanyStaff.objects.filter(staff_of=self._bus_company)
#usecases.py

class ListBusCompanyStaffUseCase(BaseUseCase):
    def __init__(self, bus_company: BusCompany):
        self._bus_company = bus_company
    def execute(self):
        self._factory()
        return self._bus_company_staffs

    def _factory(self):
        self._bus_company_staffs = BusCompanyStaff.objects.filter(staff_of=self._bus_company)
#views.py

如何以这种格式序列化

id  ,
phone_number    ,
position,
email,

您可以这样做:

class ListBusCompanyStaffSerializer(serializers.ModelSerializer):
    ...
    phone_number = serializers.CharField(source='user.phone_number')

    class Meta:
        model = BusCompanyStaff
        fields = (
            ...
            'phone_number',
        )

是否有办法传入
extra_-kwargs={'phone_-number':{'source':'?}
?不确定,您可以尝试执行以下
extra_-kwargs={'phone_-number':{'source':'user.phone_-number'}
在尝试extra_-kwargs
字段名
用户时出错。phone_-number'对型号
BusCompanyStaff
无效`