如何从views.py文件中查询Django模型?

时间:2017-09-18 21:27:31

标签: python django django-models django-views

我的models.py文件中有一个名为Search的模型。我已经进行了迁移,除了一个问题外,一切都工作得很好。在我的views.py文件中,我创建了一个名为var1的变量,它将“search_query”字段查询到数据库中,但不幸的是,它无法分配该变量。 请帮助我如何访问我的模型来处理这一行,

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

这是我的models.py文件,

from django.db import models

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

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')

编辑:

我想用这个替换替换'var1' python user_profile = requests.get('https://api.github.com/users/{0}'.format(str(v‌​‌​ar1))) content = dict() content['user'] = user_profile.json() 但var1不能被替换字段替换,API给我带来了奇怪的错误

3 个答案:

答案 0 :(得分:2)

使用布尔运算符进行有用的搜索,您可以使用from django.db.models import Q # filter using operators '&' or '|'

实施例:

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

有关使用queryset的更多信息,请参阅https://docs.djangoproject.com/en/1.11/ref/models/querysets/ https://simpleisbetterthancomplex.com/tutorial/2016/11/28/how-to-filter-querysets-dynamically.html

干杯 亨利

答案 1 :(得分:1)

在您的视图中,您最常创建一个Dictionary并将select变量分配给一个属性,并以这种方式将字典传递给视图:

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

然后访问视图中的字典:

{{ property.your_key}}

请参阅Django App第3部分教程中的更多信息:https://docs.djangoproject.com/en/1.11/intro/tutorial03/

答案 2 :(得分:0)

我很难理解你要做的事情,但这些都是典型的用例。

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)

根据Klaus D.的评论编辑:

你也错过了一个点

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