Ich versuche get_bundle_detail_data
Tastypie mit benutzerdefinierten detail_uri_name, nicht übereinstimmen Typ Fehler
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'
Mit dem Codezeile foo = fields.CharField(attribute = 'modelA__variableOnModelA')
außer Kraft zu setzen, ich bin Setzen der Variable foo
auf die Ressource MyResource
, auf eine Variable auf modelA
genannt variableOnModelA
. Das funktioniert nicly.
Aber ich versuche variableOnModelA
seine die Kennung für MyResource
zu machen, auf diese Weise ich /api/v1/resource/bar/
tun kann, die detaillierten MyResource
mit dem variablen foo
Satz bar
zu bekommen.
Das Problem, das ich habe, ist der Fehler: Invalid resource lookup data provided (mismatched type).
Was sagt dieser Fehler?
Ultimate Frage: Wie kann ich foo
als detail_uri_name
verwenden?
EDIT Modell:
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'
Urls:
full_api = Api(api_name='full')
full_api.register(AgoraUserResourse())
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include(full_api.urls)),
url(r'^', include(min_api.urls)),
url(r'^search/', include('haystack.urls')),
url(r'^accounts/login/$', auth_views.login, {'template_name': 'login.html'}, name='login'),
]
tatsächliche Ressource:
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
Können Sie in Ihren Modellen und URL configs einfügen? –