gpt4 book ai didi

python - 为反向遗传关系创建序列化器

转载 作者:行者123 更新时间:2023-12-01 04:31:29 25 4
gpt4 key购买 nike

在下面显示的页面序列化器 PageSerializer 中,我想从 Collection 和显示嵌套在 PageSerializer 中的所有集合项(多对多)。

我想实现这样的输出......

"results": [
{
"url": "http://127.0.0.1:8000/v1/page/00c8015e-9b03...",
"title": "Test Page",
"collections":
{
"title": "Test Collection",
[
{
"image": "http://www.demo.com/test.png",
"video": None
},
{
"image": None,
"video": "http://www.demo.com/test.mpeg"
}
]
}

}
]
}

这就是我目前拥有的......

class Page(models.Model):
title = models.CharField(max_length=80)


class PageSerializer(serializers.ModelSerializer):

class Meta:
model = Page
fields = ("title", )



class Collection(models.Model):
title = models.CharField(max_length=80, help_text="Title of collection")
content_type = models.ForeignKey(ContentType)
object_id = models.UUIDField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
collection_items = models.ManyToManyField('collections.CollectionItem')


class CollectionItem(models.Model):

image = models.ImageField(upload_to='/test')
video = models.URLField(max_length=512, blank=True, null=True)

因为通用关系是在集合模型上这如何在 DRF 中完成?

我正在考虑在页面模型本身上创建一个方法来获取数据并将其添加到序列化器中。

我确信有更好的方法。我看过http://www.django-rest-framework.org/api-guide/relations/#generic-relationships但它只是描述了以相反的方式建立关系。

最佳答案

创建 GenericRelation例如,在您的页面模型上:

class Page(models.Model):
title = models.CharField(max_length=80)
stuff = GenericRelation('app_name_model_here')

然后像这样使用嵌套序列化器......

class PageSerializer(serializers.ModelSerializer):
stuff = YOURColltionserializer(many=True)
class Meta:
model = Page
fields = ("title", "stuff" )

一旦您定义了您的YOURColltionserializer,这将正常工作。

关于python - 为反向遗传关系创建序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32353819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com