gpt4 book ai didi

django - Tastypie 从继承的模型访问字段

转载 作者:行者123 更新时间:2023-12-04 21:20:30 24 4
gpt4 key购买 nike

是否可以使用tastypie 在相关模型上包含字段?

根据我下面的模型:如果我将一个 VideoContent 和一个 TextContent 实例持久化到数据库,那么我可以从我的 Content 资源中取回 2 个对象,但是没有一个附加字段可用。

是否可以包含来自相关模型的字段(在这种情况下,视频 url 和文本内容),并且是否可以满足将来添加更多内容类型而无需重写内容资源的需求,或者我是从方向错误?

目标是能够使用更多 ContentType 扩展它,而无需更改 Content 资源(假设首先可以使其工作)

模型.py:

class Content(models.Model):
parent = models.ForeignKey('Content', related_name='children', null=True, blank=True)

class TextContent(Content):
text = models.CharField(max_length=100)

class VideoContent(Content):
url = models.CharField(max_length=1000)

然后我的资源:
class ContentResource(ModelResource):
children = fields.ToManyField('myapp.api.resources.ContentResource', 'children', null=True, full=True)

class Meta:
resource_name = 'content'
queryset = ContentResource.objects.all()
authorization = Authorization()
always_return_data = True

最佳答案

我在另一个答案中找到了一个很好的解决方案

Populating a tastypie resource for a multi-table inheritance Django model

我遇到了同样的问题 - 尽管我仍在解决它。到目前为止,我已经弄清楚了两件事:

django-model-utils 提供了一个继承管理器,允许您使用抽象基类来查询它的表,并可以自动向下转换查询结果。

要查看的一件事是 dehydrate/rehydrate Resource 类可用的方法。

这就是我所做的:

class CommandResource(ModelResource):

class Meta:
queryset = Command.objects.select_subclasses().all()

这只会让您半途而废-资源还必须包括脱水/再水化的东西,因为您必须手动打包对象以从用户那里传输(或接收)。

我现在意识到的事情是,这是 super hacky,并且必须有一个由tastypie 提供的更好/更清洁的方法-他们不能指望您必须在这些类型的情况下进行这种类型的手动重新包装-但是,也许他们是这样。在这一点上,我只有大约 8 小时的体验 Tastampie @ ,所以如果我解释这一切都是错误的,也许一些不错的 stackoverflow 用户可以让我直截了当。 :D :D :D

关于django - Tastypie 从继承的模型访问字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753113/

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