StringRelatedField
StringRelatedField 将返回一个对应关系 model 的 unicode() 方法的字符串。
model
class Sun(models.Model):
name = models.CharField(verbose_name="分类", max_length=100)
def __str__(self):
return self.name
class After(models.Model):
title = models.CharField(verbose_name='标题', max_length=100)
vum = models.IntegerField(verbose_name='浏览量')
content = models.TextField(verbose_name='内容')
sun = models.ForeignKey(to=Sun, on_delete=models.CASCADE,related_name='after') # related_name 反向查找
def __str__(self):
return self.title
seralizer
# 序列化 StringRelatedField
# StringRelatedField 将返回一个对应关系 model 的 unicode() 方法的字符串。
class AfterSerializer(serializers.ModelSerializer):
sun = serializers.StringRelatedField()
class Meta:
model = After
fields= '__all__'
view
# 一对一
@csrf_exempt
def after_list(request):
#
if request.method == 'GET':
after = After.objects.all()
serializer = AfterSerializer(after,many=True)
return JsonResponse({"code": 0, "msg": '操作成功', "data": serializer.data})
elif request.method == 'POST':
data = JSONParser().parse(request) # 把前端传过来的json数据转成python数据类型
serializer = AfterSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data,status=201)
return JsonResponse(serializer.errors,status=400)
url
path('after/',views.after_list), # 一对一 获取或创建
嵌套序列化关系模型
顾名思义就是序列化里面有另一个序列化类
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = '__all__'
class CategorySerializer(serializers.ModelSerializer):
articles = ArticleSerializer(many=True)
class Meta:
model = Category
fields = '__all__'
depth
这个字段可以用来深度遍历
#注意是ModelSerializer
class CategorySerializer(serializers.ModelSerializer):
articles = ArticleSerializer(many=True)
class Meta:
model = Category
fields = '__all__'
depth = 2