Questions tagged «django-orm»

Django的ORM系统,包括其查询集和模型系统。

3
如何在Django queryset中执行OR条件?
我想编写一个与此SQL查询等效的Django查询: SELECT * from user where income >= 5000 or income is NULL. 如何构造Django queryset过滤器? User.objects.filter(income__gte=5000, income=0) 这是行不通的,因为它AND是过滤器。我想要OR过滤器以获取单个查询集的并集。

4
Django ORM中的select_related和prefetch_related有什么区别?
在Django文件中, select_related() “遵循”外键关系,在执行查询时选择其他相关对象数据。 prefetch_related() 对每个关系进行单独的查找,并在Python中执行“联接”。 “在python中进行连接”是什么意思?有人可以举例说明吗? 我的理解是,对于外键关系,使用select_related; 对于M2M关系,请使用prefetch_related。它是否正确?

4
Django自引用外键
一般来说,我对Web应用程序和数据库内容还是陌生的,所以这可能是一个愚蠢的问题。我想制作一个模型(“ CategoryModel”),其字段指向模型的另一个实例(其父实例)的主要ID。 class CategoryModel(models.Model): parent = models.ForeignKey(CategoryModel) 我该怎么做呢?谢谢!


3
Django values_list vs值
在Django中,以下两个之间有什么区别: Article.objects.values_list('comment_id', flat=True).distinct() 与 Article.objects.values('comment_id').distinct() 我的目标是在每个下方获得一个唯一的注释ID列表Article。我已经阅读了文档(实际上已经使用了这两种方法)。结果似乎很相似。

6
如何为具有多对多字段的Django模型创建对象?
我的模特: class Sample(models.Model): users = models.ManyToManyField(User) 我想同时保存user1并保存user2在该模型中: user1 = User.objects.get(pk=1) user2 = User.objects.get(pk=2) sample_object = Sample(users=user1, users=user2) sample_object.save() 我知道这是错误的,但是我敢肯定,您会明白我的意思。你会怎么做?

9
为什么要遍历大型Django QuerySet消耗大量内存?
该表包含大约一千万行。 for event in Event.objects.all(): print event 这会导致内存使用量稳定增加到4 GB左右,这时行将快速打印。第一行打印之前漫长的延迟让我感到惊讶–我希望它几乎可以立即打印。 我也尝试过Event.objects.iterator()以相同的方式表现。 我不明白Django正在将什么加载到内存中或为什么这样做。我希望Django在数据库级别遍历结果,这意味着结果将以大致恒定的速率打印(而不是经过漫长的等待一次全部打印)。 我误会了什么? (我不知道它是否相关,但是我正在使用PostgreSQL。)


3
从表字段中选择不同的值
我正在努力使自己的头转向Django的ORM。我想做的是获取表中字段中不同值的列表..等效于以下之一: SELECT DISTINCT myfieldname FROM mytable (或者) SELECT myfieldname FROM mytable GROUP BY myfieldname 我至少想在使用原始sql之前以Django方式进行操作。例如,有一个表: 身份证,街道,城市 赫尔大街1号 赫尔其他街2号 3,Bibble Way,莱斯特 4,另一种方式,莱斯特 Londidium高街5号 我想得到: 赫尔,莱斯特,朗迪丁。

4
在Django中链接多个filter(),这是一个错误吗?
我一直认为在Django中链接多个filter()调用总是与在单个调用中收集它们相同。 # Equivalent Model.objects.filter(foo=1).filter(bar=2) Model.objects.filter(foo=1,bar=2) 但是我在代码中遇到了一个复杂的查询集,情况并非如此 class Inventory(models.Model): book = models.ForeignKey(Book) class Profile(models.Model): user = models.OneToOneField(auth.models.User) vacation = models.BooleanField() country = models.CharField(max_length=30) # Not Equivalent! Book.objects.filter(inventory__user__profile__vacation=False).filter(inventory__user__profile__country='BR') Book.objects.filter(inventory__user__profile__vacation=False, inventory__user__profile__country='BR') 生成的SQL是 SELECT "library_book"."id", "library_book"."asin", "library_book"."added", "library_book"."updated" FROM "library_book" INNER JOIN "library_inventory" ON ("library_book"."id" = "library_inventory"."book_id") INNER JOIN "auth_user" ON ("library_inventory"."user_id" = "auth_user"."id") …
103 django  django-orm 

5
如何在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}] 是否有另一种更内置的方法,还是我必须手动执行此操作?
101 django  django-orm 

5
Django仅选择具有重复字段值的行
假设我们在Django中有一个定义如下的模型: class Literal: name = models.CharField(...) ... 名称字段不是唯一的,因此可以具有重复的值。我需要完成以下任务:从模型中选择具有至少一个name字段重复值的所有行。 我知道如何使用普通的SQL来做到这一点(可能不是最好的解决方案): select * from literal where name IN ( select name from literal group by name having count((name)) > 1 ); 因此,可以使用django ORM选择它吗?还是更好的SQL解决方案?
96 sql  django  django-orm 

4
在django中选择DISTINCT各个列?
我很好奇,是否有任何方法可以在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,但是如果我必须去那里,那很好。尽管我以前从未在Django / Python中编写过原始SQL。

4
Django过滤器包含对多对多
我试图通过多对多关系过滤一堆对象。因为该trigger_roles字段可能包含多个条目,所以我尝试了contains过滤器。但是由于它被设计为与字符串一起使用,我几乎无助于我如何过滤这种关系(您可以忽略values_list()atm。)。 此功能附加到用户配置文件: 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) 我的工作流程模型如下所示(简化): 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) …

9
如何解决在Django中跨数据库缺乏对外键的支持的问题
我知道Django不支持跨多个数据库的外键(最初是Django 1.3文档) 但我正在寻找解决方法。 什么不起作用 我在单独的数据库中有两个模型。 routers.py: class NewsRouter(object): def db_for_read(self, model, **hints): if model._meta.app_label == 'news_app': return 'news_db' return None def db_for_write(self, model, **hints): if model._meta.app_label == 'news_app': return 'news_db' return None def allow_relation(self, obj1, obj2, **hints): if obj1._meta.app_label == 'news_app' or obj2._meta.app_label == 'news_app': return True return None def …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.