drf序列化时嵌套显示外键关联字段

话不多说,先看代码:
models.py

from django.db import models

class Product(models.Model):
    name = models.CharField()
 
class ProductCategory(models.Model):
    category = models.ForeignKey(Product)

正向嵌套显示外键字段:
serializers.py

from rest_framework import serializers

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = '__all__'
 
 
class ProductCategorySerializer(serializers.ModelSerializer):
    category = ProductSerializer()
 
    class Meta:
        model = ProductCategory
        fields = '__all__'

反向嵌套外键:

from rest_framework import serializers

class ProductCategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = ProductCategory
        fields = '__all__'


class ProductSerializer(serializers.ModelSerializer):
	productcategory_set = ProductCategorySerializer(many=True)
    class Meta:
        model = Product
        fields = '__all__'
# 注意:这时添加了一个参数 many=True ,表示将要序列化多个对象
# drf的ModelSerializer类似于ModelForm,Serializer类似于Form
# 看另一个例子,在view.py中有如下定义:
# def post_list(request):
#	posts = Post.objects.filter(status='normal')
#	post_serializers = PostSerializer(posts, many=True)
#	return Response(post_serializers.data)

drf官网
django-filter官网

Tips: 在django中如果子表外键中没有设置related_name参数,那么主表在访问子表属性时使用 X_set的形式访问子表属性(其中X为子表数据表的表名,使用英文小写,使用形式:主表.子表_set(),详情可自行百度 “django的反向查询” )

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值