2017-09-18 6 views
-2

J'ai un modèle nommé Rechercher dans mon fichier models.py. J'ai fait des migrations et tout fonctionne parfaitement bien sauf un problème. Dans mon fichier views.py j'ai créé une variable appelée var1 qui interroge le champ "search_query" dans la base de données, mais malheureusement, elle n'a pas pu affecter cette variable. S'il vous plaît aidez-moi comment accéder à mon modèle pour travailler cette ligne,Comment faire pour interroger le modèle Django à partir du fichier views.py?

var1 = Search.objects.latest('search_query'),search_query 

Voici mon fichier models.py,

from django.db import models 

class Search(models.Model): 
    search_query = models.CharField(max_length=64) 

fichier views.py,

from django.shortcuts import render, redirect 
import requests 
from git_profile.forms import SearchForm 
from git_profile.models import Search 

def index(request): 
    var1 = Search.objects.latest('search_query'), search_query 

EDIT: Je veux remplacer 'var1' avec ce remplacement python user_profile = requests.get('https://api.github.com/users/{0}'.format(str(v‌​‌​ar1))) content = dict() content['user'] = user_profile.json() mais var1 ne peut pas être remplacé par le champ de remplacement et API me donne une erreur bizarre

+1

Il y a une virgule où il devrait y avoir un point. –

+0

Pouvez-vous donner un petit aperçu de ce que vous voulez faire avec votre requête? –

+0

Je veux remplacer 'var1' avec ce remplacement '' 'python user_profile = requests.get ('https://api.github.com/users/ {0}' .format (str (v ar1))) content = dict() contenu [ 'user'] = user_profile.json() '' ' mais var1 ne peut pas être remplacé par le champ de remplacement et API me donne une erreur bizarre –

Répondre

0

vous plus créer dans votre point de vue d'un dictionnaire et d'assigner la variable de sélection à une propriété et passez le dictionnaire à la vue de cette façon:

def index(request):  
    var1 = Search.objects.latest('search_query').search_query 
    context = {'property': var1 } 
    return render(request, 'YOURVIEW', context) 

puis accéder au dictionnaire dans la vue:

{{ property.your_key}} 

Voir plus d'informations dans la partie App Django 3 tutoriel: https://docs.djangoproject.com/en/1.11/intro/tutorial03/

0

J'ai eu du mal à comprendre ce que vous essayez de faire, mais ce sont des cas d'utilisation typiques.

from django.shortcuts import render, redirect 
import requests 
from git_profile.forms import SearchForm 
from git_profile.models import Search 


def index(request): 
    var1 = Search.objects.all() 
    # do something with variable var1 

# another example 
def index(request, search_query): 
    # as you can notice I'm expecting the parameter search_query, so make sure that in urls.py you define it properly. 
    var1 = Search.objects.filter(search_query=search_query) 

modifier selon le commentaire de Klaus D.:

vous êtes absent également un point

def index(request): 
    var1 = Search.objects.latest('search_query').search_query 
    # do something with variable var1 
+0

Je veux remplacer 'var1' avec cette remplacement '' 'python user_profile = requests.get ('https://api.github.com/users/ {0}'.format (str (var1))) content = dict() content ['user'] = user_profile.json() '' ' mais var1 ne peut pas être remplacé par un champ de remplacement et l'API me rend bizarre –

1

Il y a une recherche utile en utilisant l'opérateur booléen que vous pouvez utiliser from django.db.models import Q # filter using operators '&' or '|'.

Exemple:

class RestaurantListView(ListView): 
    def get_queryset(self): 
     slug = self.kwargs.get("slug") 
     if slug: 
      queryset = RestaurantLocation.objects.filter(
       Q(category__iexact=slug) | 
       Q(category__icontains=slug) 
      ) 
     else: 
      queryset = RestaurantLocation.objects.all() 
     return queryset 

Pour plus d'informations sur l'utilisation queryset, reportez-vous à https://docs.djangoproject.com/en/1.11/ref/models/querysets/ https://simpleisbetterthancomplex.com/tutorial/2016/11/28/how-to-filter-querysets-dynamically.html

Vive Henry