se qualcuno legge la mailing list Tastypie: non ho ricevuto risposta, quindi mi dispiace per il crosspost qui.Costruire gli URL inversi in get_resource_uri
In Tastypie, ho modificato il pattern URL di una risorsa, perché utilizzo un'altra chiave rispetto al PK. Funziona bene quando accedo alla risorsa. Ora voglio nidificare questa risorsa in una risorsa padre, ma la risorsa nidificata contiene gli URI con il PK, non la mia chiave personalizzata. Quello che ho imparato è che nel mio caso, devo cambiare get_resource_uri del bambino.
Il metodo di risorsa di mio figlio (che è un NamespacedResource) si presenta così:
def get_resource_uri(self, bundle_or_obj):
obj = bundle_or_obj.obj if isinstance(bundle_or_obj, Bundle) else bundle_or_obj
kwargs={
'resource_name': self._meta.resource_name,
'custom_id': obj.custom_id
}
return self._build_reverse_url('api_dispatch_detail', kwargs=kwargs)
metodo Ignora URL del bambino è questo:
def override_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<custom_id>[-_\w\d]+)%s$" % (
self._meta.resource_name,
trailing_slash()
),
self.wrap_view('dispatch_detail'),
name="api_dispatch_detail"
),
]
Ma l'applicazione non può invertire l'URL. Viene visualizzato questo errore:
Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'custom_id': u'3_ee5-4423', 'resource_name': 'myresource'} not found.
Come si inverte correttamente l'URL?
Grazie in anticipo.
perfetto, grazie! – schneck