2017-10-19 4 views
0

J'ai l'application Transaction et le modèle Transaction. Le modèle de transaction a une clé étrangère pour le modèle utilisateur. J'ai remarqué que je peux préremplir certains champs avec des données via les paramètres GET. Par exemple, pour choisir l'utilisateur pour ma transaction sous forme d'administration que je peux utiliser cette url:Comment puis-je inverser l'URL admin de django avec les paramètres url pour préremplir certains champs?

transactions/transaction/add/?user=1 

Il fonctionne très bien, mais je veux à la fonction inverse de l'utilisateur pour générer ce genre de urls.

Essayé ceci:

from django.urls import reverse 
reverse('admin:transactions_transaction_add', kwargs={'user': 1}) 

mais nous avons eu cette erreur:

Reverse for 'transactions_transaction_add' with arguments '()' 
and keyword arguments '{'user': 1}' not found. 1 pattern(s) 
tried: ['admin/transactions/transaction/add/$'] 

J'ai fait ce travail à utiliser concaténer lien généré:

change_url = reverse(
     "admin:transactions_transaction_add", 
    ) + "?user=" + str(obj.pk) 

Mais serait très gentil de savoir si la solution la plus claire pour cela. Notez que 'transactions/transaction/ajouter /? User = 1' fonctionne très bien si vous l'utilisez depuis le navigateur, une erreur apparaît pour la fonction inverse.

Merci!

+2

Mais concaténer * est * la réponse. Les modèles d'URL Django n'incluent pas les paramètres de chaîne de requête. –

+0

Oui, merci. Fonctionne très bien donc je l'ai laissé tel quel. – alexche8

Répondre