在 Django 模型中排序多对多关系

2023-11-25

假设 Django 模型中有多对多关系,例如:

class GroceryList(models.Model):
    items = models.ManyToManyField(GroceryItem, related_name='in_lists')

class GroceryItem(models.Model):
    name = models.CharField(unique=True)

你和我都可以在两个不同的列表中拥有相同的项目,例如Avocado,并且它们将指向相同的Avocado object.

实现任意的最好方法是什么order对于每个列表中的项目,可以为每个列表单独编辑吗? (即我有Avocado在我的列表中第一个,而你在索引中有它4)

django 有序模型看起来是一个有趣的解决方案,但它假设所有对象的全局顺序。


您可以使用中间表through并在该表中添加有序字段。

class GroceryList(models.Model):
    items = models.ManyToManyField(GroceryItem, related_name='in_lists', 
            through='Order')

class GroceryItem(models.Model):
    name = models.CharField(unique=True)

class Order(models.Model):
    number = models.PositiveIntegerField()
    gl = models.ForeignKey(GroceryList)
    gi = models.ForeignKey(GroceryItem)

所以而不是做grocerylist.items.add(groceryitem)你可以做

#for groceryitem1 as 1st item in grocerylist1
Order.objects.create(gl=grocerylist1, gi=groceryitem1, number=1)

#for groceryitem1 as 10th item in grocerylist2
Order.objects.create(gl=grocerylist2, gi=groceryitem1, number=10)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Django 模型中排序多对多关系 的相关文章

随机推荐

  • 如何让CSV阅读器读取内存文件?

    我正在尝试将整个文件提取到内存中 完成 使用 StringIO 但据我所知 这些对象的行为并不完全像 真实 文件 我得到了整个内容 或者我可以读取一次一行 但我不知道如何应用此模式 import csv with open MYMEMORY
  • 如何使用 simple_form 生成 input[type=date]?

    当我做f input start date as date我得到 3 个选择元素 日 月和年 我可以f input start date as string to get input type text 元素 但我怎样才能生成input t
  • 订阅或绑定现有的Intent服务

    我有一个应用程序 它的初始活动会在列表视图中列出一些文件 单击列表中的某个项目时 您将看到该特定文件的详细活动 在详细视图中 我有一个名为下载的按钮 当您单击下载时 它会启动一个 IntentService 该 IntentService
  • 第一次使用 MongoDB + Docker - 从 docker compose 设置

    我想尝试一下project我在 GitHub 上找到了 所以我在 MacOS 上安装了 MongoDB 现在我试图了解如何通过目录中的 docker compose 文件正确设置它 这是泊坞窗文件 version 3 services re
  • 代码完成不适用于远程文件(使用 RSE)

    What is 在主机上 Windows 7的 面向 PHP 开发人员的 Eclipse版本 Helios 服务版本 2 在访客机器上 Linux Debian 挤压 我想使用 RSE 在 Eclipse 中通过 SSH 编辑我的远程项目
  • 我什么时候应该使用 Perl 的 AUTOLOAD?

    In Perl 最佳实践 AUTOLOAD 部分的第一行是 不要使用自动加载 然而 他描述的所有案例都涉及面向对象或模块 我有一个独立的脚本 其中一些命令行开关控制定义特定函数的哪些版本 现在我知道我可以将条件和评估放在文件顶部 然后再进行
  • 您可以覆盖 scala @serialized 对象中的流编写器吗?

    我现在明白了 scala serialized 对象可以像 Java Serialized 对象一样使用 在 Java Serialized 对象中 您可以重写一些方法来更改对象的流式传输方式 writeObject ObjectOutpu
  • 如何在 JavaScript 中使用 ISO 8601 格式化带有时区偏移的日期?

    Goal 找出local time and UTC time offset然后按以下格式构造 URL 示例网址 Actions Sleep duration 2002 10 10T12 00 00 05 00 该格式基于W3C 推荐 文档说
  • 将 Cassandra BoundStatement 的 ResultSet 映射/转换/转换为使用对象映射 API 构建的 Java 类的最有效方法是什么?

    DataStax Java for Apache Cassandra 中是否有内置方法可以将来自 BoundStatement 的 ResultSet 映射到使用对象映射 API 构建的域对象 Java 类 我是从 Mapper Acces
  • div 清除后 IE 中的额外垂直空间

    我通过左浮动创建了一个简单的 div 网格 并在每行末尾创建了一个空的 div 这在 Firefox 中工作正常 但在 IE 中我在行之间获得了额外的垂直空间 我尝试应用 clearfix 方法 但我一定做错了什么 为什么 IE 会插入多余
  • 跟踪 Python 导入

    我的 Python 库刚刚更改了它的主模块名称foo bar to foobar 为了向后兼容 foo bar仍然存在 但导入它会引发一些警告 现在 似乎一些示例程序仍然从旧模块导入 但不是直接导入 我想找出错误的地方import陈述 有没
  • U后缀的含义

    后缀 或后缀 有什么作用U以下值的平均值 0U 100U 它代表unsigned 声明常量时 还可以指定其类型 另一个常见的例子是L 这代表long 并且您必须将其放置两次才能指定 64 位常量 例子 1ULL 它有助于避免显式强制转换
  • 如何打乱 ArrayList [重复]

    这个问题在这里已经有答案了 我需要一些帮助来编写一个对 ArrayList 进行洗牌的方法 我不知道该在我的方法中放置什么 这是我到目前为止所拥有的 我尝试使用随机方法来随机化列表中的整数 但这不起作用 有人可以告诉我该怎么做吗 这是我尝试
  • 随机数生成最安全的种子是什么?

    为随机数生成器提供种子的最安全的熵源是什么 这个问题与语言和平台无关 适用于网络上的任何机器 理想情况下 我正在寻找云环境中的机器或托管公司提供的服务器可用的资源 有两个重要的弱点需要记住 使用时间发送随机数生成器违反了CWE 337 使用
  • 如何使用 JavaScript 将所有计算的 CSS 样式从一个元素移动到另一个元素?

    我有一个外部样式表 它将某些样式应用于给定元素 我希望能够将这些样式 使用 JavaScript 完全移动到不同的元素 而无需事先了解正在应用的样式 The CSS td padding 5px div HTML td div Apply
  • Grails 域类必须与数据库绑定吗?

    对于 grails 来说 我是一个十足的菜鸟 对于 groovy 来说 我还是一个菜鸟 所以如果这是一个愚蠢的问题 我深表歉意 我正在构建一个简单的 Web 应用程序 我想根据文件系统对象 即目录结构和文件类型 而不是数据库数据来控制应用程
  • 大引号导致 Java Scanner hasNextLine() 为 false —— 为什么?

    我在让 java util Scanner 读取我在记事本中保存的文本文件时遇到问题 即使它与其他文件一起工作得很好 基本上 当它尝试读取问题文件时 它完全空手而归 hasNextLine 为假 缓冲区为空等 我将其范围缩小到这样一个事实
  • 无法在 @INC 中的 /usr/share/perl/5.14/CPAN/FirstTime.pm 中找到 local/lib.pm

    我正在尝试使用 Perl第一次我的系统是 Ubuntu 12 04 我安装了 Perl v 5 14 2 我抬头如何安装 Perl 模块 所以我开始如下 perl MCPAN e shell 向导开始配置环境 如下所示 http paste
  • Vulkan 的 VkAllocationCallbacks 使用 malloc/free() 实现

    我正在阅读Vulkan 内存分配 内存主机似乎 VkAllocationCallbacks 可以使用简单的 malloc realloc free 函数来实现 typedef struct VkAllocationCallbacks voi
  • 在 Django 模型中排序多对多关系

    假设 Django 模型中有多对多关系 例如 class GroceryList models Model items models ManyToManyField GroceryItem related name in lists cla