Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 跟踪数据库中存储和检索的项目订单_Database_Django_Crud - Fatal编程技术网

Database 跟踪数据库中存储和检索的项目订单

Database 跟踪数据库中存储和检索的项目订单,database,django,crud,Database,Django,Crud,我试图弄清楚如何“CRUD”我在一个组中存储在数据库中的项目的顺序。(伪语句:从应用程序中选择*项,其中组id=1;) 我的猜测是,我只是使用一个数字字段,随着更多项目添加到组中或从组中删除,我只是增加/减少数字。然后,我可以在移动项目时更新此字段中的项目编号。然而,我在一个旧的遗留应用程序中看到这一点非常糟糕,在这个应用程序中,项目将失去同步,并且您将有一个组,其中的订单将以如下方式结束: 0,1,1,3,4,5 0,1,1,1,4,5 应用程序也没有很好地处理这一问题,导致应用程序崩溃,需

我试图弄清楚如何“CRUD”我在一个组中存储在数据库中的项目的顺序。(伪语句:从应用程序中选择*项,其中组id=1;)

我的猜测是,我只是使用一个数字字段,随着更多项目添加到组中或从组中删除,我只是增加/减少数字。然后,我可以在移动项目时更新此字段中的项目编号。然而,我在一个旧的遗留应用程序中看到这一点非常糟糕,在这个应用程序中,项目将失去同步,并且您将有一个组,其中的订单将以如下方式结束:

0,1,1,3,4,5
0,1,1,1,4,5
应用程序也没有很好地处理这一问题,导致应用程序崩溃,需要手动干预来重新排序数据库中的项目

有没有办法避免这个陷阱

编辑:我可能还想在多个组和多个订单的项目可用。 我想在这种情况下,我需要一个多对多的关系来处理组到项目的关系和项目到订单的关系/编辑


我将在Django框架中执行此操作。

我不太确定您在问什么;因为排序是一回事,而相关对象的分组则完全是另一回事

数据库不存储事物的顺序,而是存储事物的关系(分组)。事情的顺序是一个用户界面细节,而不是数据库应该用于的东西

在django中,您可以创建一个
ManyToMany
关系。这实际上创建了一个“框”,您可以在其中添加和删除与特定模型相关的项。以下是来自以下方面的示例:

此处,一篇文章可以属于多个出版物,并且出版物中有一篇或多篇与之关联的文章:

a = Article.create(headline='Hello')
b = Article.create(headline='World')
p = Publication.create(title='My Publication')

p.article_set.add(a)
p.article_set.add(b)
p.save()

# You can also add an article to a publication from the article object:

c = Article.create(headline='The Answer is 42')
c.publications.add(p)
要了解一份出版物中有多少篇文章:

Publication.objects.get(title='My Publication').article_set.count()

对不起,我想我脑子里还不清楚,这就是为什么我要努力写下来的原因。我想存储订单状态,以便向用户显示项目的特定顺序(与日期、字母顺序字符域或项目id无关)。复杂的因素是将项目分为多个组。假设您的文章标题为“您好”“我们的”“朋友”,并且您希望按该顺序显示它们,每一次。ID分别为2,4,3,1,添加的日期将跟随ID。您不能按id、日期时间或字母顺序对它们排序,但您希望访问者在输出
Publication.objects.get(title='My Publication').article\u set.all()
而不是“friends”、“hello”、“our”、“to”时看到原始顺序。在模板中,您需要一些用于向最终用户排序演示文稿的内容,而无需按照首选顺序手动按id输出每个项目。
Publication.objects.get(title='My Publication').article_set.count()