【问题标题】:Django- Retrieve all details from mysql databaseDjango-从 mysql 数据库中检索所有详细信息
【发布时间】:2018-04-07 09:19:06
【问题描述】:

我有一个连接到 MySQL 数据库的 Django 应用程序。 在 MySQL 数据库中,我有一个名为 Evaluation 的表,其中 eval_id、eval_name 和 date 作为其列。

在我的 Django 视图中,我正在尝试使用以下代码获取相关数据。

from django.http import HttpResponse, JsonResponse
from .models import Teacher, Subject, Evaluation, Teaches, eval_summary

# Create your views here.
def index(request):
   eval_list = Evaluation.objects.all()
   return HttpResponse(eval_list)

在输出中,我只得到 eval_name 条目,而不是 eval_id 和日期。 我应该包括什么来获取所有详细信息?

我的输出只是 2014_Term1 2014_Term2 2014_Term3 2015_Term1 等等..我还希望ID和日期与每个条目相关联。

另外,如果我想获得一个特定的条目,我该如何获得它的所有属性?

Evaluation.objects.get(eval_id=1) 只返回名称。

【问题讨论】:

  • 你可以试试.values()的方法。例如。 eval_list = Evaluation.objects.all().values('eval_id', 'eval_name','date').
  • 另外,当我尝试使用 Evaluation.objects.get(eval_id=1) 时,您能否告诉我如何获取所有字段?
  • 检查我作为答案发布的代码。
  • values 不是这里的正确答案。
  • @DanielRoseman 好的,现在我很困惑。为什么你只在这个问题中没有提到模板时才谈论模板?

标签: mysql django django-views


【解决方案1】:

尝试使用.values()

要获取所有值,您可以执行以下操作 -

eval_list = Evaluation.objects.filter(<your condition>).values('eval_id', 'eval_name','date')

例如。要获取具有 eval_id=1 的对象的所有值,请执行 -

eval_list = Evaluation.objects.filter(eval_id = 1).values('eval_id', 'eval_name','date')

【讨论】:

  • 也可以链接2个模型并获取数据吗?以前我会编写 SQL 查询来链接表并获取数据。我如何在 Django 中做到这一点而不插入原始 SQL 查询?有可能吗?
  • 链接是指使用foreignKey或m2m字段的值吗?如果是,那么是的。您可以使用.values()__ 表示法获取值。见这里link
  • 我有 3 个表,教师表、学科表和一个教师表(以教师 ID 和学科 ID 作为外键)。现在,如果我想获得他们教授的所有老师和科目,我该如何链接?以前使用 SQL 我使用 select teacher_id,name,subject_id from teacher,subject,teaches where(teaches.teacher_id = teacher.teacher_id and teaches.subject_id = subject.subject_id)
  • 该查询类似于 - teaches.objects.filter(teacher__id=&lt;teacherId&gt;).values()。但是,如果您对此提出新问题,则可以进行更好的讨论。
【解决方案2】:

这个问题完全是基于一个误解;而且,与上一个答案相反,您不需要需要使用values

当您在模板上输出一个对象时,您会看到它的默认字符串表示,它由__str__ 方法定义。在您的情况下,这仅显示名称。

但其他字段仍然存在,您可以通过普通属性查找来访问它们。例如:

{% for eval_object in eval_list %}
    {{ eval_object.eval_name }}
    {{ eval_object.eval_date }}
{% endfor %}

【讨论】:

  • 这是否意味着在我的模板(比如 html 文件)中我必须访问单个值?但是,如果我想对 views.py 文件中收到的数据进行一些处理呢?
  • 什么?我在回答你的问题。当然,您也可以使用标准点符号以完全相同的方式访问视图中的值。
  • 非常感谢。我去做。我想以表格的形式显示这些数据。以前我运行原始 SQL 查询并以 json 格式返回结果。
  • 那么你应该使用模板,确定吗?
  • 是的,我需要这样做。该表需要由这些数据填充。我对这个视图的意图是它作为它的 API。我是 Django 的新手,所以对它有点困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
相关资源
最近更新 更多