【问题标题】:How to query Django model from views.py file?如何从 views.py 文件中查询 Django 模型?
【发布时间】:2018-02-27 12:47:26
【问题描述】:

我的 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 给了我奇怪的错误

【问题讨论】:

  • 有逗号的地方应该有一个点。
  • 您能稍微了解一下您想对查询执行什么操作吗?
  • 我想用这个替换 python user_profile = requests.get('https://api.github.com/users/{0}'.format(str(v‌​ar1))) content = dict() content['user'] = user_profile.json() 替换 'var1' 但 var1 不能被替换字段替换,API 给了我奇怪的错误

标签: python django django-models django-views


【解决方案1】:

有一个使用布尔运算符的有用搜索,您可以使用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

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

干杯 亨利

【讨论】:

    【解决方案2】:

    在您看来,您最常创建一个字典并将选择变量分配给一个属性,然后以这种方式将字典传递给视图:

    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/

    【讨论】:

      【解决方案3】:

      我很难理解您要做什么,但是这些是典型的用例。

      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
      

      【讨论】:

      • 我想用这个替换 python user_profile = requests.get('https://api.github.com/users/{0}'.format(str(var1))) content = dict() content['user'] = user_profile.json() 替换 'var1' 但 var1 不能被替换字段替换,API 让我很奇怪
      猜你喜欢
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多