je la vue suivante qui prend la valeur de « q » à partir d'un modèle:Modèle Méthode avec une variable
from django.http import HttpResponse
from django.shortcuts import render_to_response
from GOTHAMWEB.GRID.models import *
def search(request):
errors = []
if 'q' in request.GET:
q = request.GET['q']
if not q:
errors.append('Enter a search term.')
elif len(q) > 20:
errors.append('Please enter at most 20 characters.')
else:
srvr = Server.objects.filter(name__icontains=q)
return render_to_response('search_results.html',
{'srvr': srvr, 'query': q})
return render_to_response('search_form.html',
{'errors': errors})
Est-il possible de passer la valeur de q de la vue d'une méthode de modèle, comme "serveur = 'q'" ci-dessous. J'ai essayé ceci mais échoue. Avant de conclure que cela ne peut pas être fait, quelqu'un pourra-t-il me le dire avec certitude?
class MemoryManager(models.Manager):
def get_query_set(self):
return super(MemoryManager, self).get_query_set().filter(server='q')
MemoryManager est-il défini en tant que gestionnaire principal dans votre modèle de serveur (par exemple, "objects = MemoryManager")? Vous devez modifier get_query_set pour accepter les paramètres, soit un paramètre (q) ou un ensemble d'arguments. Pourquoi ne pas faire une méthode distincte sur le gestionnaire pour ces appels? – Tom
Non, c'est la deuxième: # 1 objects = models.Manager() # 2 memsinserver = MemoryManager() –