将'QuerySet'从Django 1.4更改为1.7

用户名

我正在尝试从Django 1.4.15-> 1.7.3移植应用程序

我遇到了一个问题,其中应用程序在models.py中有一种方法

def is_votable(self, user):
        '''
        Decides if the user can vote for him/herself or not
        '''
        if self.rated_by.all().__contains__(user):
            return False
        return True

我遇到的问题位于此行上:

if self.rated_by.all().__contains__(user):

会产生错误:

'QuerySet' object has no attribute '__contains__'

我可能是盲目的,因为我看不到__contains__在Django中过时的地方任何帮助深表感谢。还可以问您是否需要更多信息。

丹尼尔·罗斯曼

您几乎永远都不应像__contains__在代码中那样调用双下划线方法在几乎所有情况下,都可以使用in运算符:

if user in self.rated_by.all():

请注意,这是Python范围内的事情:例如,不调用而mylist.__length__()就做do len(mylist),而不是就做myobj.__unicode__()do unicode(myobj),等等。

但是,在这种特殊情况下,您可能还会发现执行查询更有效:

if self.rated_by.filter(user_id=user.id).exists():

这将对数据库进行单个EXISTS查询。如果您不在rated_by该特定对象上的其他任何地方使用queryset,那肯定比查询all()和检查成员资格更有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django,将QuerySet的列表合并为1个Queryset

来自分类Dev

Django QuerySet将IN更改为ANY(array [...])

来自分类Dev

将<1>更改为_1

来自分类Dev

Django 1.6如何将列表更改为queryset或如何编写这种查询?

来自分类Dev

Apache 2 / PHP 7 将内容类型更改为 text/html:charset=iso-8859-1

来自分类Dev

如何将1更改为00001?

来自分类Dev

将列值从1更改为0

来自分类Dev

将count ++从1更改为0.0001 php

来自分类Dev

无法将视图列的数据类型从数字更改为数字 (4,1)

来自分类Dev

Django的。将函数应用于queryset

来自分类Dev

将原始SQL转换为Django QuerySet

来自分类Dev

将JavaScript中的gethours更改为1-12

来自分类Dev

将结果从第2行更改为第1行

来自分类Dev

将sda2更改为sda1

来自分类Dev

将UTC0更改为UTC + 1 / + 2

来自分类Dev

将大熊猫的分组尺寸从2更改为1

来自分类Dev

如何将输出从1更改为星期一?

来自分类Dev

imshow / imwrite将所有像素值更改为1

来自分类Dev

如何将Linux的日期更改为UTC / GMT +1?

来自分类Dev

将下表从1NF更改为2NF

来自分类Dev

将tinyint的默认值更改为1个mysql

来自分类Dev

将等级编号更改为1-5

来自分类Dev

GuessBirthday.java将1更改为Y

来自分类Dev

将布尔值更改为0或1以外的值?

来自分类Dev

将字符串中找到的数字更改为 1

来自分类Dev

将 sda2 更改为 sda1

来自分类Dev

Laravel/vuejs 将布尔值从 0 更改为 1

来自分类Dev

ffmpeg:容器将MKV更改为MP4流:1个视频,2个音频,1个字幕,1个附件

来自分类Dev

numpy:将每行的max更改为1,所有其他数字更改为0