5 django html-parsing django-rest-framework
我正在为我的 API 端点使用 Django REST 通用视图。我的序列化程序中的字段之一具有 ManyToMany 关系。我想将该字段显示到我的 API 端点中,但收到此错误
HTML 输入中当前不支持列表。
我的看法是这样的:
class AlertCreateView(ListCreateAPIView):
permission_classes = (IsAuthenticated,)
pagination_class = None
serializer_class = AlertSerializer
def get_queryset(self):
queues = Queue.objects.all()
for queue in queues:
queryset = Alert.objects.filter(
queue=queue
)
return queryset
Run Code Online (Sandbox Code Playgroud)
我的序列化器是这样的:
class AlertSerializer(serializers.ModelSerializer):
queue = QueueSerializer(many=True)
class Meta:
model = Alert
fields = (
'id', 'name', 'queue','email', 'expected_qos'
)
Run Code Online (Sandbox Code Playgroud)
您不需要get_queryset
可以执行以下操作的方法:
#views.py
class AlertCreateView(ListCreateAPIView):
queryset = Alert.objects.all()
serializer_class = AlertSerializer
permission_classes = (IsAuthenticated,)
Run Code Online (Sandbox Code Playgroud)
序列化器中字段的命名方式与模型queues
中的字段命名方式相同。related_name
并且您QueueSerializer
可以继承PrimaryKeyRelatedField
并进行渲染。
#models.py
class AlertModel(models.Model):
...
queues = models.ManyToManyField(Queue, ... related_name='queues')
...
#serializer.py
class QueueSerializer(PrimaryKeyRelatedField, serializers.ModelSerializer):
class Meta:
model: Queue
class AlertSerializer(serializers.ModelSerializer):
queues = QueueSerializer(many=True, queryset=Queue.objects.all())
class Meta:
model = Alert
fields = (
'id', 'name', 'queues','email', 'expected_qos'
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8865 次 |
最近记录: |