Je veux transmettre une variable par URL à une autre page de Django Admin. Il semble que cela ne fonctionne pas, je veux transmettre la variable "/? nom = bonjour", et attrapez-le par demande.get.get ["nom", ""]. Mais l'URL devient "/? E = 1" après avoir passé. Si j'utilise le paramètre par défaut ', cela fonctionne, mais cela aura un conflit. Il semble que ce problème soit Django-admin seulement. Et j'ai besoin de passer par URL pas post ... Est-ce que quelqu'un sait résoudre ce problème p>
merci p>
3 Réponses :
Pouvez-vous expliquer votre problème un peu plus ... Pourquoi voulez-vous passer une variable à Django Admin ... Aussi, vous ne pouvez pas attraper une variable comme ça ... Utilisez:
request.GET.get('name','')
J'ai utilisé y a utilisé demande.get.get ('nom', ''). Je veux transmettre la variable à admin pour dire, ce qui rapporte de se présenter. q = 0 pour montrer les rapports soumis. q = 1 pour montrer les rpoets qui ont été attribués et etc.
Je ne peux que cela qu'en utilisant le paramètre q. quel Q est utilisé par la recherche déposée. c'était bien. Mais maintenant, je dois utiliser le champ de recherche. et q sera utilisé pour cela. Donc, j'ai besoin de le réparer vraiment.
Vous pouvez penser pourquoi je ne pense pas poster. Cette raison est que, s'il y a plus de rapports qu'une page peut montrer. Djang Admin Utilisez p = 1, p = 2 pour utiliser plusieurs pages pour afficher tous les rapports. Mais si je n'utilise pas obtenir, ça va perdre une piste
Pouvez-vous poster vos modèles. Voulez-vous filtrer les résultats du site administrateur? Je pense que ce que vous voulez, c'est une option list_filter = ['champ1', "field2 '] dans l'administrateur.py de votre modèle. Cela ajoutera un filtre similaire à ce que vous voulez réaliser.
Le problème est que la recherche Cette solution fonctionne sur Django 1.3: P> nom code> n'existe pas lorsque le get_query_set code> essaie de le résoudre comme champ modèle. Ainsi, un incorreclookupparameters () code> est soulevé qui à son tour redirige vers l'URL "e = 1" non utile. Ce problème est résolu dans Django 1.4 avec l'introduction de filtres personnalisésPecs. Jusque-là, une solution possible consiste à écraser de manière dynamique la classe code> ChangeList code> renvoyée par votre Modeladmins code> get_changelist () code> méthode. class MyModelAdmin(ModelAdmin):
def get_changelist(self, request, **kwargs):
changelist_class = super(MyModelAdmin, self).get_changelist(request,
**kwargs)
class CustomChangeList(changelist_class):
def __init__(self, request, *args, **kwargs):
self._name = request.GET.get('name')
super(CustomChangeList, self).__init__(request, *args, **kwargs)
def get_query_set(self, *args, **kwargs):
if self._name:
del self.params['name']
qs = super(CustomChangeList, self).get_query_set(*args, **kwargs)
if self._name:
return qs.filter([FILTER WHAT YOU WANT HERE...])
return qs
return CustomChangeList
Arrive à moi dans django 2.0 s'il y a plus d'un paramètre, par exemple point final /? A = B & C = D CODE>. Fonctionne bien avec un seul paramètre comme point final /? A = B code>
On dirait que la question est toujours sans réponse et similaire à Une autre question . Meesterguyperson a posté là-bas une excellente réponse , allez-y.
La solution consiste à créer un "faux filtre" qui enregistrera un paramètre d'URL avec Django mais n'affectera pas l'apparence du site QuerySet et Admin. P>
J'ai adapté la réponse de Meesterguyperson un peu moi-même et au lieu d'utiliser un modèle vierge pour masquer le "faux filtre", j'exclure simplement it à partir du volet de filtre en retournant False de HAS_Output Méthode. P>
class SomethingAdmin(admin.ModelAdmin):
...
list_filter = (
...,
NameKwargPassThroughFilter,
...,
)
...
N'a pas de sens,
request.get.get ["nom", ""] code> causeraittypeError code>.