Python 尝试获取序列化程序上“phone_number”字段的值时获取AttributeError
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
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
无效`