如何计算 django 连接表中对象的数量?

2024-07-04

我的问题很简单:我有Users谁拥有Assets or Assets属于用户的如果您愿意,但我无法检索其数量(计数)Assets each User有。我知道这对你们大多数人来说可能听起来很愚蠢,但我是 python/django (来自 PHP/MySQL)的新手,我不知道这里的事情是如何工作的。我不想使用原始 SQL - 如果没有其他办法的话,这将是我的最后选择。

(*) 我已经从代码中删除了所有不相关的原始数据

Users

class Users(models.Model):
    firstname = models.CharField(max_length=100)
    lastname = models.CharField(max_length=100)

Assets

class Assets(models.Model):
    serial = models.CharField(unique=True, max_length=100)
    user = models.ForeignKey('Users', blank=True, null=True)

    # this is what I am playing with to retrieve the number of assets each user owns
    @classmethod
        def user_assets(self):
            return Assets.objects.filter(user=user).count()

views.py

class UserList(ListView):
    model = Users
    def get_context_data(self, **kwargs):
        context = super(UserList, self).get_context_data(**kwargs)
        context['user_assets'] = self.model.user_assets()
        return context

template

{% for user in object_list %}
     <tr>
         <td>{{ user.id }}</td>
         <td>
             {{ user_assets }}
         </td>
     </tr>
{% endfor %}

我怎样才能得到那个号码?我读过有关聚合、注释和过滤器的内容,但无法真正理解。

EDIT:

我正在寻找一个简单的解决方案,通过使用基于类的视图并且易于扩展(我可能想稍后添加其他模型)


In your UserList使用此查询集代替使用模型:

from django.db.models import Count

class UserList(ListView):
    queryset = Users.objects.annotate(num_assets=Count('assets'))

并定义你的user像这样的字段:

user = models.ForeignKey('Users', blank=True, null=True, related_name='assets')

然后从模板:

{{ user.num_assets }}

另请记住,使用单数模型名称是一个很好的做法,以避免与反向关系名称混淆。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算 django 连接表中对象的数量? 的相关文章

  • python 中的神经网络:决策/分类总是给出 0.5

    首先我想说我是一个Python初学者 对神经网络也是完全陌生的 当我读到它时 我非常兴奋 并认为我从头开始设置了一些代码 参见下面的代码 但不知怎的 我的代码无法正常工作 我猜想存在一些重大错误 在算法和编程中 但我现在找不到他们 所以 在
  • Kivy:如何在树视图中使用 on_key_down 和 on_key_up 键盘事件?

    我在用python 2 7 and kivy 1 10 0 当我点击nameTextInput 然后树视图显示 我希望选择标签up and down键 并且当enter按下键 文本被复制 所选文本被复制到初始表单 就像您单击该项目时当前完成
  • 查找带有 tag1 和 tag2 的帖子? (使用连接表)存在/具有/子查询...使用什么?

    我需要进行查询以搜索和过滤多个术语 我有一张装有武器的桌子 所有武器都可以有多个标签 我希望能够为用户创建一个过滤选项 仅显示带有例如武器的武器 标签1 和 标签2 到目前为止 我正在使用过滤它们GROUP CONCAT with HAVI
  • 通过key查询模型

    我想做的是查询数据存储中的模型 其中密钥是not我已经拥有的对象的密钥 这是一些代码 class User db Model partner db SelfReferenceProperty def text message self ms
  • 上传大文件nginx + uwsgi

    堆栈 flask 0 10 uwsgi 1 4 5 nginx 1 2 3 我可以通过我的应用程序上传小文件 CONTENT LENGTH 无效 太大 跳过 nginx 日志没有显示任何有用的内容 我尝试了以下操作 但没有成功 nginx配
  • PostgreSQL 使用“lag()”窗口函数更新查询

    我有一个涉及Postgresql数据库的任务 我对 SQL 不太有经验 我有一张贸易产品每周营业额的表格 每周提供以下信息 产品 周数 周营业额 可能是正值或负值 具体取决于天气 更多产品被购买或出售 我添加了一栏 其中包含每周的期末余额
  • 使用php从xml中导出mysql数据

    我正在尝试使用 php 将数据从 mysql db 导出为特定的 xml 格式 我是这样创建的 如果我这样做 我会在 xml 中得到 string 的正确输出
  • PHP 从 MySQL 中选择日期字段为未来 7 天

    我有一个自动检查器 可以检查将在未来 7 天内过期的域名 并向客户发送电子邮件 我使用这个 SQL 查询 SELECT from domain names where status or status valid and expiry da
  • 数据集继续使用线性回归而不是决策树模型

    我想在我的数据集上使用决策树模型 但无论我做什么 它都会继续使用线性回归 数据不同 但图表仍然相同 基本上 我编写了线性回归的代码 from sklearn linear model import LinearRegression linr
  • ValueError:在 ECB 模式下数据必须与块边界对齐

    我正在使用以下代码在 ECB 模式下尝试 aes 128 加密 from Crypto Cipher import AES key abcdefghijklmnop cipher AES new key encode utf8 AES MO
  • 为唯一字段显示 Django 错误消息

    我想更改当重复条目尝试保存时的默认错误消息 而它们应该是唯一的 即unique True 很像这样 email models EmailField unique True error messages unique This email h
  • 剥离功能未按预期工作

    def sstrip a b raw input enter the string to be stripped off i a strip b print i k raw input enter the string sstrip k o
  • 为什么 Python 中的元组不可变? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 python 字符串和元组是不可变的 https stackoverflow com questions 1538663 why are python strings and tuples a
  • Python,创建对象

    我正在尝试学习 python 现在我正在尝试掌握类的窍门以及如何使用实例来操作它们 我似乎无法理解这个练习问题 创建并返回一个学生对象 其姓名 年龄和专业为 与作为输入给出的相同 def make student name age majo
  • Django 会话竞争条件?

    摘要 Django 会话中是否存在竞争条件 如何防止它 我在 Django 会话方面遇到了一个有趣的问题 我认为该问题涉及由于同一用户同时发出请求而导致的竞争条件 它发生在一个同时上传多个文件的脚本中 正在本地主机上进行测试 我认为这使得同
  • 如何编写一个 SQLAlchemy 查询来返回图中节点的所有后代?

    我正在开发一个应用程序 其中我的数据库对象通常有多个父级和多个子级 并且希望创建一个 SQLAlchemy 查询来返回对象的所有后代 意识到我基本上是在尝试将图形存储在 SQL 数据库中 我发现设置一个自引用多对多模式 http docs
  • Numpy“shape”函数返回 2D 数组的 1D 值

    所以我创建了这个数组作为示例 a np array 1 1 1 1 2 2 2 2 3 3 3 3 4 13 49 13 49 10 10 2 2 11 1 1 1 2 22 2 2 3 33 3 3 4 133 49 13 49 100
  • Python 与 Hive 的连接

    我安装了 Hortonworks Hive ODBC 驱动程序并在数据源中创建了连接 我测试了它并且成功了 我安装了PyODBC并编写了以下代码 import os sys pyodbc con pyodbc connect DSN MyC
  • 在Python中返回外部函数错误

    这就是问题 给定以下 Python 程序 假设用户从键盘输入数字 4 返回的值是多少 N int input enter a positive integer counter 1 while N gt 0 counter counter N
  • 您使用哪种 IDE(如果有)构建 python GUI 项目?

    是否有任何 IDE 如 VS 支持拖放来构建 python GUI 连接到数据库等 尽管我是一个 emacs 爱好者 但我发现使用 VS 创建 GUI 更容易 仅对于 GUI 我发现 VisualWx http visualwx alter

随机推荐