Python Django模型继承和序列化程序
我想在Python Django模型继承和序列化程序,python,django,django-rest-framework,django-serializer,Python,Django,Django Rest Framework,Django Serializer,我想在NoticeModel中有几个模型,但目前我只有一个: class NoticeModel(SpicerModel): userId = models.ForeignKey( 'account.User', on_delete=models.CASCADE, null=False, blank=False, related_name='notice_user' ) is_read = models.BooleanFie
NoticeModel
中有几个模型,但目前我只有一个:
class NoticeModel(SpicerModel):
userId = models.ForeignKey(
'account.User',
on_delete=models.CASCADE, null=False, blank=False,
related_name='notice_user'
)
is_read = models.BooleanField(null=False, blank=False, default=False)
context = models.CharField(max_length=64, null=False, blank=False, choices=NoticeContext.CHOICES)
message = models.CharField(max_length=255, null=False, blank=False, default='')
class BookingRequestNotice(NoticeModel):
booking_request = models.ForeignKey(
BookingRequest,
on_delete=models.CASCADE,
null=False,
blank=False,
related_name='booking_event_notice'
)
下面是序列化程序:
class NoticeModelSerializer(serializers.HyperlinkedModelSerializer):
userId = serializers.ReadOnlyField(source='userId.email')
class Meta:
model = NoticeModel
fields = [
'id',
'userId',
'is_read',
'context',
'message'
]
class BookingRequestNoticeSerializer(NoticeModelSerializer):
class Meta:
model = BookingRequestNotice
fields = NoticeModelSerializer.Meta.fields + ['booking_request']
要获得所有通知,我需要:
class NoticeList(APIView):
permission_classes = [permissions.IsAuthenticated]
def get(self, request):
user = getCurrentUser(request)
notices = NoticeModel.objects.filter(userId=user).filter(is_read=False)
serializer = NoticeModelSerializer(notices, many=True, context={'request': request})
return Response(serializer.data)
问题是,因为我使用的是NoticeModelSerializer
,所以我只获取带有公共字段的对象(我不获取booking\u请求
)。如何返回特定的序列化程序而不必单独查询它们中的每一个