【发布时间】:2017-12-14 07:17:59
【问题描述】:
我有这个 Django REST Framework 序列化程序类:
class DoctorMeetingSerializer(serializers.ModelSerializer):
doctor_id = serializers.CharField()
patient_id = serializers.CharField()
meetings_amount = serializers.SerializerMethodField()
class Meta:
model = DoctorMeeting
fields = (
'id',
'doctor_id',
'patient_id',
'start_time',
'end_time',
'subject',
'meetings_amount',
)
read_only_fields = ('zoom_meeting_id', 'is_live', 'meetings_amount',)
def get_meetings_amount(self, obj):
print(type(obj))
meetings_amount = DoctorMeeting.objects.filter(patient=obj.patient_id).count()
return meetings_amount
所以当我执行 GET 请求时,print(type(obj)) 显示 obj 是序列化程序实例,但随后我执行 POST 请求,obj 成为 OrderedDict 实例并且没有“患者 ID”属性。为什么这个对象在不同的请求方法中会改变它的类型?
【问题讨论】:
-
我想问题出在你的观点中,请发表你的观点。
-
是的,视图可能是两难的,但您可以通过以下方式实现阅读字典。 self.__dict__['initial_data']
标签: django django-rest-framework