Tag: django orm

Django:有没有一种方法来计算unit testing的SQL查询?

我正在试图找出一个实用函数执行的查询的数量。 我已经为这个函数写了一个unit testing,这个函数运行的很好。 我想要做的是跟踪由该函数执行的SQL查询的数量,以便可以看到重构后是否有任何改进。 def do_something_in_the_database(): # Does something in the database # return result class DoSomethingTests(django.test.TestCase): def test_function_returns_correct_values(self): self.assertEqual(n, <number of SQL queries executed>) 编辑:我发现这是一个未决的Django function请求 。 不过票还是开着的。 同时还有另外一种方法可以解决这个问题吗?

如何在Django的values()中重命名项目?

我想在djangoproject.com上的这个票上做类似的事情 ,但是有一些额外的格式。 从这个查询 >>> MyModel.objects.values('cryptic_value_name') [{'cryptic_value_name': 1}, {'cryptic_value_name': 2}] 我想得到这样的东西: >>> MyModel.objects.values(renamed_value='cryptic_value_name') [{'renamed_value': 1}, {'renamed_value': 2}] 还有另外一种内置的方法,还是我必须手动执行?

Django使用contains来过滤多对多

我试图通过多对多的关系过滤一堆对象。 因为trigger_roles字段可能包含多个条目,所以我尝试了包含filter。 但是,因为这是devise用于string我非常无奈,我应该如何过滤这个关系(你可以忽略values_list()atm。)。 此function附加到用户configuration文件: def getVisiblePackages(self): visiblePackages = {} for product in self.products.all(): moduleDict = {} for module in product.module_set.all(): pkgList = [] involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True) 我的工作stream模型看起来像这样(简化): class Workflow(models.Model): module = models.ForeignKey(Module) current_state = models.ForeignKey(Status) next_state = models.ForeignKey(Status) allowed = models.BooleanField(default=False) involved_roles = models.ManyToManyField(Role, blank=True, null=True) trigger_roles = models.ManyToManyField(Role, blank=True, null=True) 虽然解决scheme可能很简单,但我的大脑不会告诉我。 谢谢你的帮助。

Django的数据库查询:如何通过ID获取对象?

Django自动创build一个id字段作为主键。 现在我需要通过这个id来获取对象。 object = Class.objects.filter() 如何写这个filter?

Django:模型中的列表字段?

在我的模型中,我想要一个具有三元组列表的字段。 例如`[[1,3,4],[4,2,6],[8,12,3],[3,3,9]]。 有没有可以将这些数据存储在数据库中的字段?

在Django中selectDISTINCT个别列?

我很好奇,如果有什么办法在Django做一个查询不是“ SELECT * FROM… ”下面。 我试图做一个“ SELECT DISTINCT columnName FROM … ”。 具体来说,我有一个模型,看起来像: class ProductOrder(models.Model): Product = models.CharField(max_length=20, promary_key=True) Category = models.CharField(max_length=30) Rank = models.IntegerField() Rank是Category的排名。 我希望能够遍历所有类别在该类别中的每个等级上进行一些操作。 我想首先获取系统中所有类别的列表,然后查询该类别中的所有产品并重复,直到处理完每个类别。 我宁愿避免原始的SQL,但如果我必须去那里,那会很好。 尽pipe我从来没有在Django / Python中编写原始SQL。

Django,从模型方法查询过滤

我有这些模型: def Foo(Models.model): size = models.IntegerField() # other fields def is_active(self): if check_condition: return True else: return False def Bar(Models.model): foo = models.ForeignKey("Foo") # other fields 现在我想查询具有活动Foo的酒吧,例如: Bar.objects.filter(foo.is_active()) 我收到错误,如 SyntaxError at / ('non-keyword arg after keyword arg' 我怎样才能做到这一点?

什么SQLAlchemy可以做的例子,Django的ORM不能

最近我在使用Pyramid和SQLAlchemy进行了大量的研究,而在Django中保留了当前的应用程序。 这本身就是一场辩论,但我不是在这里讨论的。 我想知道的是,为什么SQLAlchemy普遍认为比Django ORM更好? 几乎每一个,如果不是每一个,我都发现了两种偏好SQLAlchemy之间的比较。 我认为性能是一个很大的一个,因为SQLAlchemy的结构可以让它更顺利地转换成SQL。 但是,我也听说,更艰巨的任务,Django ORM几乎不可能使用。 我想确定这个问题有多大。 我一直在阅读的一个原因,切换到SQLAlchemy是当Django ORM不再适合您的需求。 所以,简而言之,有人可以提供SQLAlchemy可以执行的查询(不一定是实际的SQL语法),但是Django ORM不可能不添加额外的原始SQL呢? 更新 : 自从我第一次问起,我就注意到这个问题引起了相当多的关注,所以我想多加两分钱。 最后,我们结束了使用SQLAlchemy,我必须说我对这个决定感到高兴。 我正在重温这个问题,提供一个额外的SQLAlchemy特性,到目前为止,我还没有能够在Django ORM中进行复制。 如果有人能提供一个如何做到这一点的例子,我会很乐意吃我的话。 假设你想使用一些postgresql函数,例如similarity(),它提供了一个模糊的比较(参见: 用PostgreSQL快速查找类似的string -tl; drinput两个string得到相似的百分比)。 我已经做了一些关于如何使用Django ORM进行search的方法,并且除了使用原始的sql之外,没有发现任何东西,这似乎是从他们的文档中显而易见的: https : //docs.djangoproject.com/en/dev/topics/db / sql / 。 即 Model.objects.raw('SELECT * FROM app_model ORDER BY \ similarity(name, %s) DESC;', [input_name]) 然而,SQLalchemy具有func(),如下所述: http ://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.expression.func from sqlalchemy import desc, func session.query(Model).order_by(func.similarity(Model.name, input_name)) […]

从表格字段中select不同的值

我正在努力让自己的头靠近Django的ORM。 我想要做的是获得我的桌子上一个字段内的不同值的列表….相当于下列之一: SELECT DISTINCT myfieldname FROM mytable (或者可选地) SELECT myfieldname FROM mytable GROUP BY myfieldname 我至less喜欢用Django的方式,然后诉诸原始的SQL。 例如,用一个表格: 身份证,街道,城市 1,赫尔大街 2,其他街,赫尔 3,Bibble路,莱斯特 4,另一种方式,莱斯特 5,高街,Londidium 我想得到: 赫尔,莱斯特,Londidium。

Django只select具有重复字段值的行

假设我们在django中有一个模型定义如下: class Literal: name = models.CharField(…) … 名称字段不是唯一的,因此可能有重复的值。 我需要完成以下任务:从模型中select至less有一个 name字段重复值的所有行。 我知道如何使用纯SQL(可能不是最好的解决scheme): select * from literal where name IN ( select name from literal group by name having count((name)) > 1 ); 那么,是否可以使用django ORM来select它? 或更好的SQL解决scheme?