python – Tastypie使用自定义detail_uri_name,不匹配的类型错误

python – Tastypie使用自定义detail_uri_name,不匹配的类型错误,第1张

概述我试图覆盖get_bundle_detail_data class MyResourse(ModelResource): foo = fields.CharField( attribute = 'modelA__variableOnModelA' ) def get_bundle_detail_data(self, bundle): return bundle 我试图覆盖get_bundle_detail_data

class MyResourse(ModelResource):     foo = fIElds.CharFIEld( attribute = 'modelA__variableOnModelA' )     def get_bundle_detail_data(self,bundle):         return bundle.obj.foo     class Meta:         resource_name='resource'

使用代码行foo = fIElds.CharFIEld(attribute =’modelA__variableOnModelA’),我将资源MyResource上的变量foo设置为modelA上名为variableOnModelA的变量.这很有效.

但我试图让variableOnModelA成为MyResource的标识符,这样我可以做/ API / v1 / resource / bar /来获取详细的MyResource,变量foo设置为bar.

我遇到的问题是错误:提供的资源查找数据无效(类型不匹配).这个错误说的是什么?

终极问题:我如何使用foo作为detail_uri_name?

编辑
模型:

class AgoraUser(models.Model):    user = models.OnetoOneFIEld(User,on_delete=models.CASCADE,primary_key=True,related_name='agora_user')    class Meta:        db_table = 'agora_users'

网址:

full_API = API(API_name='full')full_API.register(AgoraUserResourse())urlpatterns = [    url(r'^admin/',admin.site.urls),url(r'^',include(full_API.urls)),include(min_API.urls)),url(r'^search/',include('haystack.urls')),url(r'^accounts/login/$',auth_vIEws.login,{'template_name': 'login.HTML'},name='login'),]

实际资源:

class AgoraUserResourse_min(ModelResource):    username = fIElds.CharFIEld(attribute = 'user__username' )    class Meta:        resource_name='user'        #detail_uri_name = 'user__username'        queryset = AgoraUser.objects.all()        allowed_methods = ['get','put','post']        authentication = AgoraAuthentication()        authorization = AgoraAuthorization()    def get_bundle_detail_data(self,bundle):        return bundle.obj.username
解决方法 看起来您需要覆盖您的资源的detail_uri_kwargs.

我结束了这样的事情:

from tastypIE import fIEldsfrom tastypIE.resources import ModelResourcefrom tastypIE.bundle import Bundlefrom .models import AgoraUserclass AgoraUserResourse(ModelResource):    username = fIElds.CharFIEld(attribute='user__username')    class Meta:        resource_name='user'        detail_uri_name = 'user__username'        queryset = AgoraUser.objects.all()        allowed_methods = ['get','post']        # authentication = AgoraAuthentication()        # authorization = AgoraAuthorization()    def detail_uri_kwargs(self,bundle_or_obj):        if isinstance(bundle_or_obj,Bundle):            bundle_or_obj = bundle_or_obj.obj        return {            'user__username': bundle_or_obj.user.username        }    def get_bundle_detail_data(self,bundle):        return bundle.obj.username
总结

以上是内存溢出为你收集整理的python – Tastypie使用自定义detail_uri_name,不匹配的类型错误全部内容,希望文章能够帮你解决python – Tastypie使用自定义detail_uri_name,不匹配的类型错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1197673.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存