尝试获取序列化程序上字段"phone_number"的值时出现AttributeError



AttributeError:尝试获取序列化程序ListBusCompanyStaffSerializer上字段phone_number的值时出现AttributeError。基本上我有两个型号UserBusCompanyStaffUser由电话号码字段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不包含phone_number字段,但要求输入User电话号码和电子邮件,因此存在明显错误以下是我在views.py和usecases.py 中的其余代码

#用例.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

class ListBusCompanyStaffView(generics.ListAPIView):
serializer_class = bus_company_user_serializers.ListBusCompanyStaffSerializer
def get_bus_company(self):
return GetBusCompanyUseCase(
bus_company_id=self.kwargs.get('bus_company_id')
).execute()
def get_queryset(self):
return ListBusCompanyStaffUseCase(
bus_company=self.get_bus_company()
).execute()

我如何以这种格式序列化

id  ,
phone_number    ,
position,
email,

您可以这样做:

class ListBusCompanyStaffSerializer(serializers.ModelSerializer):
...
phone_number = serializers.CharField(source='user.phone_number')
class Meta:
model = BusCompanyStaff
fields = (
...
'phone_number',
)

最新更新