- 第一种:一对一
- 第二种:一对多
比如现在有model表:
# models.py
class Build(models.Model):
name = models.CharField(max_length=255)
class Box(models.Model):
build = models.ForeignKey(Build, models.DO_NOTHING)
name = models.CharField(max_length=255)
一个建筑有很多个箱子
那么我想这个Box的序列化的json带着他的主Build。
那么我们只需要在serializers.py里编写的时候加上
class BoxSerializer(serializers.ModelSerializer):
build_id = serializers.CharField(source='build.id',read_only=True)
build_name = serializers.CharField(source='build.name',read_only=True)
class Meta:
model = Box
fields = '__all__'
记得新添的build_id和build_name后面带上read_only=True
那么显示出来的json就会是带着的它的主(Build)的了
比如现在我有一个表:画师painter,然后又有一个表:作品product。现在我想要一个画师带着他们各自的作品的json。
# models.py
class Painter(models.Model):
openid = models.CharField(max_length=255,primary_key=True)
name = models.CharField(max_length=255)
class Product(models.Model):
painter = models.ForeignKey(Painter,models.CASCADE,related_name='products')
url = models.CharField(max_length=255)
那么我们需要记得在Product的外键字段painter上加上一个related_name,这里我们填products(自己起名)
然后在serializers.py文件里,新建一个PainterProductSerializer,并且加上字段products(刚刚起的名字)
class PainterProductSerializer(serializers.ModelSerializer):
products = ProductSerializer(many=True,read_only = True)
class Meta:
model = Painter
fields = '__all__'
那么之后序列化的时候每个json里的画家就会带上他们的所有作品



