相关疑难解决方法(0)

按字段值的QuerySet

假设我有以下型号:

class Contest:
    title = models.CharField( max_length = 200 )
    description = models.TextField()

class Image:
    title = models.CharField( max_length = 200 )
    description = models.TextField()
    contest = models.ForeignKey( Contest )
    user = models.ForeignKey( User )

    def score( self ):
        return self.vote_set.all().aggregate( models.Sum( 'value' ) )[ 'value__sum' ]

class Vote:
    value = models.SmallIntegerField()
    user = models.ForeignKey( User )
    image = models.ForeignKey( Image )
Run Code Online (Sandbox Code Playgroud)

站点的用户可以将他们的图像贡献给多个竞赛.然后其他用户可以向上或向下投票.

一切正常,但现在我想显示一个页面,用户可以看到对某个比赛的所有贡献.图像应按其分数排序.因此我尝试了以下方法:

Contest.objects.get( pk = id ).image_set.order_by( 'score' )
Run Code Online (Sandbox Code Playgroud)

因为我担心它不起作用,因为'score'没有可用于查询的数据库字段.

python database django

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

通过返回的方法结果对Django查询集进行排序

假设我有一个像Bill这样的事情的查询集:

test=Things.objects.filter(user='Bill')
Run Code Online (Sandbox Code Playgroud)

现在我想按照分配给账单的日期对所有这些事情进行排序.不幸的是,赋值日期不是Thing模型中的字段.相反,有一个名为thing_date()的方法可以计算出来并返回日期.例如,以下内容:

Thingobject.thing_date()
Run Code Online (Sandbox Code Playgroud)

...返回日期.我想我想做的是:

test=Things.objects.filter(user='Bill').order_by(self__thing_date())
Run Code Online (Sandbox Code Playgroud)

......但我知道那是行不通的.还有另外一种方法吗?

更新

毫不奇怪,其他人以前一直沿着这条路走下去.链接

django django-queryset

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

Django ORM并击中DB

当我做的事情

一世. objects = Model.objects.all()

然后

II. objects.filter(field_1=some_condition)

我每次在第2步都遇到各种条件时都会点击db.有没有办法在第一个操作中获取所有数据然后只是处理结果?

django orm

8
推荐指数
1
解决办法
4552
查看次数

如何按django中的计算值排序

嘿我想根据django中的计算值对对象进行排序...我该怎么办?

以下是基于堆栈溢出的用户配置文件模型示例,解释了我的困境:

class Profile(models.Model):
    user = models.ForeignKey(User)

    def get_reputation():
        ... 
        return reputation
    reputation = property(get_reputation)
Run Code Online (Sandbox Code Playgroud)

所以,说我想按声誉对用户进行排序.我怎么做?我知道你不能这样做:

Profile.objects.order_by("-reputation")
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助 :)

python sorting django web-applications django-models

6
推荐指数
3
解决办法
5712
查看次数

Django Listview按对象方法排序并返回Python列表作为查询集

我有一个 Django 通用视图 (ListView),我想添加选项来通过它的方法对对象进行排序,这些方法有点复杂,并且可能难以使用extra(). 我意识到做到这一点的唯一方法是使用以下内容对 Queryset 进行排序():

sorted(queryset, key=lambda q: q.choice_entropy())
Run Code Online (Sandbox Code Playgroud)

但是,要将其合并到 ListView 中,并允许用户选择排序条件,我需要这样的东西

class IndexView(ListView):
    model = Question

    def get_queryset(self):
        queryset = super(IndexView, self).get_queryset()
        if 'order_by' in self.request.GET:
            if self.request.GET['order_by'] == 'entropy':
                return sorted(queryset, key=lambda q: q.choice_entropy())
            elif self.request.GET['order_by'] == 'newest':
                return queryset.order_by('-published_time')
            elif self.request.GET['order_by'] == ... (some other sorting criterion)
        return queryset
Run Code Online (Sandbox Code Playgroud)

这里的问题(大概)是sorted(queryset, key=lambda q: q.choice_entropy())return a <type 'list'>whilequeryset的类型是<class 'django.db.models.query.QuerySet'>

我不认为这会是一个问题,因为self.queryset实际上可以是任何可迭代的项目,而不仅仅是一个查询集。但 ListView 似乎不喜欢这个,我只是得到A server error …

python sorting django listview

5
推荐指数
0
解决办法
1685
查看次数

Django 将 pandas 数据框转换为查询集

我有一个 Django 应用程序,可以将查询集呈现到表中。

我需要对底层查询集进行一些修改,最方便的方法是将查询集转换为数据帧,在那里做一些魔法,然后将结果数据帧转换回查询集,以便我可以将其输入到现有的渲染中。

将查询集转换为数据帧似乎很简单,但我找不到将其转换回来的方法。

tables.py

class StuffTable(tables.Table):
    class Meta:
        model = Stuff
        template_name = 'django_tables2/semantic.html'


views.py

import django_pandas.io as dpd
from django_tables2.tables import Table
from .models import Stuff
from .tables import StuffTable

def index(request):

    context = dict()
    template = 'gui/index.html'

    stuff = Stuff.objects.all()

    # do pandas stuff with the data
    df = dpd.read_frame(stuff)
    df = ...
    modified_stuff = convert_df_back_to_qs(df) # how to do this?

    table = StuffTable(modified_stuff)
    context['table'] = table

return render(request, template, context)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

编辑:我想转换回来的原因是 html 文件看起来像

{% …
Run Code Online (Sandbox Code Playgroud)

django pandas

5
推荐指数
1
解决办法
4667
查看次数

在 Django 中从 ids 列表手动创建查询集

假设我有一个模型My_model,并且有该模型的 id 列表;

my_ids = [3,2,1,42]
Run Code Online (Sandbox Code Playgroud)

现在我想获得一个带有My_model.objectsid 的 QuerySet。我已经找到了这个解决方案,但它对我不起作用,因为我希望 QuerySet 中的对象与my_ids.

如何在 Django 和 Python 中转换 QuerySet 中的 id 列表?

python sqlite django django-queryset

5
推荐指数
1
解决办法
2818
查看次数