在多对多关系对象django的对象中获取空值
getting null in object of many to many relation object django
我正在数据库中保存一个具有多对多关系的对象,但是当我获取它时,它 returns 我是那个关系对象的 ID,但我想要整个对象,所以我在序列化程序中添加了一个 属性 之后,它 returns 我只有 object.name 并且它的值为空,我不知道它为什么会这样?有人可以帮忙吗?
views.py
queryset = Tag.objects.filter(project_id=project_id).all()
serializer = TagSerializer(queryset, many=True)
return Response(serializer.data)
serializers.py
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
# fields = '__all__'
fields = ['id', 'name', 'description', 'singleline']
singleline = SinglelineSerializer(read_only=True)
models.py
class Tag(models.Model):
name = models.CharField(max_length=255, default='')
description = models.CharField(max_length=255, default='')
singleline = models.ManyToManyField(Singleline)
class Meta:
db_table = 'tags'
一个Tag
可以有很多Singleline
,你需要使用many=True
因为它是一个集合:
class TagSerializer(serializers.ModelSerializer):
singleline = SinglelineSerializer(read_only=True<strong>, many=True</strong>)
class Meta:
model = Tag
fields = ['id', 'name', 'description', 'singleline']
您可以通过预取 singleline
关系来提高视图的效率,从而批量加载所有相关的 Singleline
:
queryset = Tag.objects.filter(project_id=project_id)<strong>.prefetch_related('singleline')</strong>
serializer = TagSerializer(queryset, many=True)
return Response(serializer.data)
我正在数据库中保存一个具有多对多关系的对象,但是当我获取它时,它 returns 我是那个关系对象的 ID,但我想要整个对象,所以我在序列化程序中添加了一个 属性 之后,它 returns 我只有 object.name 并且它的值为空,我不知道它为什么会这样?有人可以帮忙吗?
views.py
queryset = Tag.objects.filter(project_id=project_id).all()
serializer = TagSerializer(queryset, many=True)
return Response(serializer.data)
serializers.py
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
# fields = '__all__'
fields = ['id', 'name', 'description', 'singleline']
singleline = SinglelineSerializer(read_only=True)
models.py
class Tag(models.Model):
name = models.CharField(max_length=255, default='')
description = models.CharField(max_length=255, default='')
singleline = models.ManyToManyField(Singleline)
class Meta:
db_table = 'tags'
一个Tag
可以有很多Singleline
,你需要使用many=True
因为它是一个集合:
class TagSerializer(serializers.ModelSerializer):
singleline = SinglelineSerializer(read_only=True<strong>, many=True</strong>)
class Meta:
model = Tag
fields = ['id', 'name', 'description', 'singleline']
您可以通过预取 singleline
关系来提高视图的效率,从而批量加载所有相关的 Singleline
:
queryset = Tag.objects.filter(project_id=project_id)<strong>.prefetch_related('singleline')</strong>
serializer = TagSerializer(queryset, many=True)
return Response(serializer.data)