
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,不匹配的类型错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)