如何将多对多字段序列化为某些列表,并通过休息框架返回它们?在下面的示例中,我尝试将帖子与一个与之关联的标签列表一起返回.
models.py
class post(models.Model):
tag = models.ManyToManyField(Tag)
text = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
serializers.py
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ("text", "tag"??)
Run Code Online (Sandbox Code Playgroud)
views.py
class PostViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
Run Code Online (Sandbox Code Playgroud) python django django-models django-serializer django-rest-framework
我正在使用Django Rest Framework的默认路由器并尝试自定义我的链接.
如何设置如下所示的排列方式:
/myModels/dosomething(并在API Root视图中列出)/myModels/addModel?name=abc&address=xyz
Views.py
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
Run Code Online (Sandbox Code Playgroud)
urls.py
router = routers.DefaultRouter(trailing_slash=True)
router.register(r'mymodels', views.MyModelViewSet)
Run Code Online (Sandbox Code Playgroud)我有以下标签和帖子对象的多对多关系.我尝试在post序列化程序中返回的是返回列表中的标记(仅使用Tag.name)而不是json,这样做的干净方法是什么?
serializers.py
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = ('name', 'description', 'date_created', 'created_by')
class PostSerializer(serializers.ModelSerializer):
tags = TagSerializer(read_only=True, many=True)
class Meta:
model = Post
fields = ('post_id',
'post_link',
'tags')
Run Code Online (Sandbox Code Playgroud)
目前,PostSerializer以json格式返回带有所有字段的标签,我只想让它在字符串列表中返回标签:['tag1','tag2','tag3'].
如何在rest框架的视图集中启用不区分大小写的搜索?
例如,假设Post模型有标签.下面的所有链接应该找到相同的标记内容,现在它们区分大小写并尝试搜索不同的值:
views.py
class PostViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
Run Code Online (Sandbox Code Playgroud)