gpt4 book ai didi

python - Tastypie - 未找到嵌套资源字段

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

我有这个代码:

#api model 

class VideoResource(ModelResource):
class Meta:
queryset = Video.objects.all()
include_resource_uri = False
resource_name = 'video'
authorization = DjangoAuthorization()

class QuestionResource(ModelResource):

user = fields.ToOneField(UserResource,'user',full=True)
video = fields.ForeignKey(VideoResource,'video',full=True)

class Meta:
queryset = Question.objects.all()
resource_name = 'question'
include_resource_uri = False
authorization = DjangoAuthorization()

def obj_create(self, bundle, request=None, **kwargs):
import json
temp = json.loads(request.body, object_hook=_decode_dict)
video = Video.objects.get(pk=temp['video'])
return super(QuestionResource, self).obj_create(bundle, request, user=request.user, video=video)

#model

class Question(models.Model):
text = models.CharField('Question',max_length=120)
created = models.DateTimeField(auto_now_add=True)
enabled = models.BooleanField(default=True)
flag = models.BooleanField(default=False)
allow_comments = models.BooleanField(default=True)
thumbnail_url = models.CharField(default='video.jpg',blank=True, null=True,max_length=200)

user = models.ForeignKey(User)
video = models.ForeignKey(Video)

def __unicode__(self):
return self.text;

class Video(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now_add=True)
url = models.URLField(default="")

user = models.ForeignKey(User)

def __unicode__(self):
return str(self.pk) + ' > ' + self.status

问题是我在发送这个对象时收到这个错误:
{"video":21,"text":"sadasds"} 

'video' 字段的数据不是 URI,不是
与字典相似且没有“pk”属性:21。


如果我评论这一行:
video = fields.ForeignKey(VideoResource,'video',full=True) 

一切正常,但后来我无法获得此信息(视频)
当询问 /api/v1/questions/
我的问题是:
  • 我应该创建资源,一个发布,另一个检索
    信息 <- 这似乎不是一个很好的解决方案。
  • 如何创建嵌套资源?我试着按照上的例子
    网络 http://django-tastypie.readthedocs.org/en/latest/cookbook.html#nested-resources
    但正如您所看到的,由于某种原因无法正常工作。

  • 也许你的眼睛可以帮助我找到错误:)
    谢谢!

    最佳答案

    The 'video' field has was given data that was not a URI, not a dictionary-alike and does not have a 'pk' attribute: 21.



    因此,这意味着整数 21 不满足该字段的要求,它还模糊地暗示什么将满足要求。

    首先,您可以发送 URI 进行记录,这可能是最正确的方法,因为 URI 确实是唯一的,而 pk 则不是。
    {"video":"/api/v1/video/21","text":"sadasds"} 

    或者,您可以发送带有 pk 字段集的类似字典的对象。
    {"video":{'pk':21},"text":"sadasds"} 

    当您注释掉 ForeignKey 字段时它起作用的原因是因为tastypie 将它视为一个IntegerField,它可以被一个普通的整数引用。

    这让我发育迟缓了一段时间,希望它有所帮助!

    关于python - Tastypie - 未找到嵌套资源字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140729/

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