【问题标题】:Get Django model row results获取 Django 模型行结果
【发布时间】:2016-02-28 14:31:53
【问题描述】:

好吧,我的第一个问题被搁置了,所以让我们再试一次... 我是一个真正的初学者 我正在创建一个 HR webapp。我可以将数据放入数据库,我什至可以获取一些部分来动态填充下拉项。 我现在要做的是从模型中获取项目以填充表格。

这些项目将来自以下模型。

class Resource(models.Model):

    title = models.CharField(max_length=10)
    preferred_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=30)
    employstatus = models.CharField(max_length=20)
    employer = models.CharField(max_length=30)
    role = models.ForeignKey('Role')
    location = models.ForeignKey('Location')
    workphone = models.CharField(max_length=25, blank=True)
    mobile_phone = models.CharField(max_length=15, blank=True)
    email = models.EmailField(max_length=50)
    notes = models.CharField(max_length=200, blank=True)
    updated_by = models.CharField(max_length=30, blank=True)
    updated_at = models.DateField(auto_now_add=True)
    archived = models.BooleanField()

以下是我尝试编写的用于取出正确部分的 api 部分。

本质上,我想要做的是将这些数据显示为稍后会出现的搜索功能的结果。 搜索将是姓氏。它将显示下面的信息并使用 pk 作为参考 id 我可以打开一个 html 页面并从该人那里提取所有数据并填充他们的页面。 然后将数据用js表示到一个html表中。

def searchres(request):
    data = {'Resource':[]}

    reslist = []
    for r in Resource.object.all():
            t = (r.pk, r.last_name, r.preferred_name, r.employer, r.location, r.role)
            reslist.append(t)

return HttpResponse(json.dumps(data), content_type='application/json')

这是要填充的表

<table class="table table-hover table-striped table-bordered"id='serres' >
    <thead>
      <tr>
    <th>Lastname</th>
    <th>Preferred Name</th>
    <th>Employer</th>
    <th>Location</th>
    <th>Role</th>
  </tr>
</thead>
<tbody>
  <tr onclick="document.location = '/Personnel/results.html?id=10';">
  </table>
</div>

在获取包含所需信息的字典的 python 部分,我能否提供一些帮助,以便我可以让 js 填充表格。

所以它需要看起来像这样???

def searchres(request):
        data = {'Resource':[]}
        data['Resource'] = reslist

        reslist = []
        for r in Resource.object.all():
                t = (r.pk, r.last_name, r.preferred_name, r.employer, r.location, r.role)
                 reslist.append(t)

        return HttpResponse(json.dumps(data), content_type='application/json')

【问题讨论】:

  • 我以为你拥有一切,只需将你的 reslist 提供给数据字典,你就完成了,data['Resource'] = reslist,对吧?您可能需要将一些外键转换为字符串,例如 locationrole
  • 您当前的代码有什么问题(除了您从未将 reslist 添加到数据字典中)?
  • 好吧,正如上面所说,我对此很陌生,这是我尝试过的第一件事。这更像是不理解为什么我所拥有的东西不起作用的情况。任何关于如何做某事或使现有代码更精简的建议都是有益的,这样我就可以提高我对它如何工作的知识和理解,从而避免我再次提出愚蠢的问题。

标签: javascript html json django api


【解决方案1】:

几个不同的事情:第一,正如@Shang Wang 所说,您需要在将其作为 JSON 返回之前将您的 reslist 提供给 data dict。它不完全清楚你希望如何附加数据,因为你有单一的“资源”,但这并没有真正的意义。我也不知道你为什么要创建一个中间对象“reslist”。我猜你想要这样的东西:

data = {"Resources":[]}
for r in Resource.object.all():
        t={
           "pk":r.pk, 
           "last_name":r.last_name,
           "preferred_name":r.preferred_name, 
           "employer":r.employer,
           "location":r.location, 
           "role":r.role
       }
        data["Resources"].append(t)

其中“资源”是资源字典的列表。我认为在 t 中创建字典比元组更有用,就像你正在做的那样,因为稍后当你在 javascript 中使用 JSON 对象时,你可以这样做:

data["Resources"][0]["last_name"]

而不是

data["Resources"][0][1]

对我来说似乎更直观。

第二,

for r in Resource.object.all():

应该是

for r in Resource.objects.all():

注意复数“对象”的“s”。

【讨论】:

  • 嗯,那可能是因为我不是 100% 了解我正在做的事情和我一起找到的拼凑点所以谢谢@Isaac Ray 我还有很多事情要做,这是我的第一个 Django 应用程序。我很高兴我在解释我需要的东西时相当冗长的方式没有在翻译中迷失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2021-08-26
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 2012-11-25
  • 2017-11-25
相关资源
最近更新 更多