序列化DRF中的前缀和许多字段 [英] Serialize a foreingkey and many to many fields in DRF
本文介绍了序列化DRF中的前缀和许多字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的模型:
class Category(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(unique=True, max_length=255, blank=True,default=None)
desc = models.TextField(blank=True, null=True )
...
class Post(models.Model):
title = models.CharField(max_length=255)
pub_date = models.DateTimeField(editable=False,blank=True)
author = models.ForeignKey(User, null=True, blank=True)
categories = models.ManyToManyField(Category, blank=True, through='CatToPost')
...
class CatToPost(models.Model):
post = models.ForeignKey(Post)
category = models.ForeignKey(Category)
...
这是串行器:
Here is the serializer:
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ('name','slug')
class PostSerializer(serializers.ModelSerializer):
categories = CategorySerializer(many=True, required=True)
class Meta:
model = Post
.......
views.py
class SingleListing(generics.RetrieveUpdateDestroyAPIView):
queryset = Post.objects.all()
serializer_class =Post
串行器
但是,这并不显示Web浏览视图中的类别字段。我只看到类别标签,但这个字段的输入字段不在那里。问题是什么?
But this doesn't show the category field in the web-browsable view. I only see the Category label, but the input fields of this fields is not there. What is the problem?
推荐答案
好的,你应该写这样的序列号:
well, you should write your serializer like this:
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ('name','slug')
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id','{anything you want}','categories')
depth = 2
这篇关于序列化DRF中的前缀和许多字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文