我有一个ModelViewSet,它公开了一个contacts
关系,这是一个广泛的电子邮件列表。
class EmailSerializer(serializers.ModelSerializer):
contacts = EmailContactSerializer(many=True, read_only=True)
class Meta:
model = Email
fields = ('id','contact_count', 'contacts')
class EmaiViewSet(viewsets.ModelViewSet):
serializer_class = EmailSerializer
如果我访问网址api/emails
,我会收到一份很好的电子邮件列表及其所有联系人。我的问题是访问此网址的速度很慢,因为它需要为每个电子邮件实例检索所有contacts
。现在,我希望在请求contact
时可以使用此详细的api/emails/<email_id>
列表。在列出电子邮件时,我可以在DRF中删除contacts
字段?
答案 0 :(得分:2)
您可以创建新的序列化程序:
class JustEmailSerializer(serializers.ModelSerializer):
class Meta:
model = Email
fields = ('id','contact_count')
并覆盖get_serializer_class
的{{1}},仅将其用于EmaiViewSet
操作:
list
答案 1 :(得分:-1)
喜欢这个??
class EmailSerializer(serializers.ModelSerializer):
class Meta:
model = Email
# I dont see a field that shows the email field
fields = ('id','contact_count') # you can add any other field you want
class EmaiViewSet(viewsets.ModelViewSet):
serializer_class = EmailSerializer