标签: django-queryset

TypeError:'RelatedManager'对象不可迭代

Django的

我有下一个型号:

class Group(models.Model):
    name = models.CharField(max_length=100)
    parent_group = models.ManyToManyField("self", blank=True)

    def __unicode__(self):
        return self.name


class Block(models.Model):

    name = models.CharField(max_length=100)
    app = models.CharField(max_length=100)
    group = models.ForeignKey(Group)

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

比方说,块b1g1组.根据它的名字,我想从g1组中获取所有块.我写了下一个递归函数:

def get_blocks(group):

    def get_needed_blocks(group):
        for block in group.block_set:
            blocks.append(block)

        if group.parent_group is not None:
            get_needed_blocks(group.parent_group)

    blocks = []
    get_needed_blocks(group)
    return blocks
Run Code Online (Sandbox Code Playgroud)

但是b1.group.block_set返回我的RelatedManager对象,它不可迭代.

该怎么办?怎么了?

python django django-models django-queryset

67
推荐指数
3
解决办法
4万
查看次数

Django SUM查询?

我有一个类似于以下内容的查询:

SELECT SUM(ISNULL(table.name)) FROM table
Run Code Online (Sandbox Code Playgroud)

这如何SUM转换为Django中的QuerySet?(即xyz,它会转换成什么操作MyModel.objects.xyz()?)

python django django-queryset django-1.2

65
推荐指数
1
解决办法
7万
查看次数

如何获取使用django bulk_create创建的对象的主键

有没有办法使用django 1.4+中的bulk_create功能获取您创建的项目的主键?

django django-models django-queryset django-views

65
推荐指数
4
解决办法
2万
查看次数

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
Run Code Online (Sandbox Code Playgroud)

现在我想要查询具有活动Foo的条形码:

Bar.objects.filter(foo.is_active())
Run Code Online (Sandbox Code Playgroud)

我收到的错误如

SyntaxError at /
('non-keyword arg after keyword arg'
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python django django-models django-orm django-queryset

63
推荐指数
4
解决办法
4万
查看次数

Django在ManyToMany计数上过滤模型?

假设我的models.py中有类似的东西:

class Hipster(models.Model):
  name = CharField(max_length=50)

class Party(models.Model):
  organiser = models.ForeignKey()
  participants = models.ManyToManyField(Profile, related_name="participants")
Run Code Online (Sandbox Code Playgroud)

现在在我的views.py中,我想做一个查询,它将为有超过0个参与者的用户取一个派对.

这样的事情可能是:

user = Hipster.get(pk=1) 
hip_parties = Party.objects.filter(organiser=user, len(participants) > 0)
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方式是什么?

django django-models django-queryset

63
推荐指数
4
解决办法
2万
查看次数

Django Queryset过滤反向外键

我有以下Django模型:

class Make:
   name = models.CharField(max_length=200)

class MakeContent:
   make = models.ForeignKey(Make)
   published = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以(不直接编写SQL)生成一个包含所有Makes和每个相关MakeContents的查询集published = True.

django model filter django-queryset

58
推荐指数
4
解决办法
5万
查看次数

Django查询相关字段计数

我有一个用户创建页面的应用程序.我想运行一个简单的数据库查询,返回有多少用户创建了超过2页.

这基本上就是我想要做的,但当然这不是正确的方法:

User.objects.select_related('page__gte=2').count()
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

django django-queryset django-select-related

58
推荐指数
2
解决办法
2万
查看次数

Django查询超过5小时的对象的日期时间

我正在尝试为超过5个小时的小部件编写一个Django查询,我有点迷失.窗口小部件模型具有使用窗口小部件DateTimeField的创建时间填充的模型.

django django-models django-queryset

56
推荐指数
3
解决办法
4万
查看次数

django - 将列表转换回查询集

我有一些记录,我想根据计算值排序.得到的答案在这里 ......像这样:

sorted(Profile.objects.all(), key=lambda p: p.reputation)
Run Code Online (Sandbox Code Playgroud)

在这样的Profile类上:

class Profile(models.Model):

    ...

    @property
    def reputation(self):
        ...
Run Code Online (Sandbox Code Playgroud)

不幸的是,通用视图需要一个queryset对象,如果我给它一个列表就会抛出错误.

有没有办法做到这一点返回一个查询集

要么...

我可以以某种方式将列表转换为查询集吗?在django docs中找不到类似的东西.

我希望不要对数据进行非规范化,但我想我会这样做.

更新/答案:

似乎获取查询集的唯一方法是,如果您可以将所有逻辑都放入sql查询中.

如果那是不可能的,(我认为)你需要对数据进行非规范化

python sorting django list django-queryset

54
推荐指数
2
解决办法
5万
查看次数

如何使用Django查询集中的条件注释Count

使用Django ORM,可以做一些像queryset.objects.annotate(Count('queryset_objects', gte=VALUE)).抓住我的漂移?


这是一个用于说明可能答案的简单示例:

在Django网站中,内容创建者提交文章,并且普通用户查看(即阅读)所述文章.文章可以发表(即可供所有人阅读),也可以草稿模式.描述这些要求的模型是:

class Article(models.Model):
    author = models.ForeignKey(User)
    published = models.BooleanField(default=False)

class Readership(models.Model):
    reader = models.ForeignKey(User)
    which_article = models.ForeignKey(Article)
    what_time = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何获得所有发表的文章,按照过去30分钟的独特读者排序?即我想要计算每个发表的文章在过去半小时内获得的不同(独特)视图的数量,然后生成按这些不同视图排序的文章列表.


我试过了:

date = datetime.now()-timedelta(minutes=30)
articles = Article.objects.filter(published=True).extra(select = {
  "views" : """
  SELECT COUNT(*)
  FROM myapp_readership
    JOIN myapp_article on myapp_readership.which_article_id = myapp_article.id
  WHERE myapp_readership.reader_id = myapp_user.id
  AND myapp_readership.what_time > %s """ % date,
}).order_by("-views")
Run Code Online (Sandbox Code Playgroud)

这引发了错误:语法错误在"01"或附近(其中"01"是额外的日期时间对象).继续下去并不多.

python django django-queryset

53
推荐指数
2
解决办法
3万
查看次数