小编ser*_*iuz的帖子

在基于类的View中获取请求对象

我想在基于类的视图中获取当前登录用户.我可以通过从请求对象中提取用户来做到这一点,但我怎样才能获得该对象?

class HomeView(TemplateView):
    template_name='home.html'

    def get_context_data(self, **kwargs):
        context = super(HomeView, self).get_context_data(**kwargs)  
        context['username'] =  request.user.username
        return context
Run Code Online (Sandbox Code Playgroud)

django

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

MongoDB查询,排序然后为组取第n个文档

我正在尝试编写一个MongoDB查询...

我的目的是通过country排序依据检索玩家记录列表,rating然后返回每个国家/地区的第n个评级玩家(因此评分最高,或评分最高等等).

我已经实现了第一部分:

db.getCollection('players').find( { event: 'open' }).sort({ country: 1, rating: -1 });
Run Code Online (Sandbox Code Playgroud)

更新

以下是两个国家的样本,每个国家有三名玩家,按评级排序:

第一队:

{
    "id" : 400041,
    "name" : "Adams Michael",
    "rating" : 2727,
    "country" : "England",
    "event" : "open"
},
{
    "id" : 404853,
    "name" : "McShane Luke J",
    "rating" : 2671,
    "country" : "England",
    "event" : "open",
},
{
    "id" : 400025,
    "name" : "Short Nigel D",
    "rating" : 2666,
    "country" : "England",
    "event" : "open"
} …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query

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

芹菜 - 在链子里面的小组

我想在链中使用一个组(或块),例如:

chain(getRange.s(3),  GROUP() , xsum.s() )
Run Code Online (Sandbox Code Playgroud)

GROUP()一组double()任务在哪里,即group(double(0),double(1),double(2)).在如何链接一个将列表返回到组中的Celery任务中发布了类似的问题但是没有解释如何将组中的输出传递给链中的下一个任务.

@task
def getRange(x):
    return range(x)

@task
def double(nr):
    return nr*2

@task
def xsum(list):
    return sum(list)
Run Code Online (Sandbox Code Playgroud)

python celery celery-task

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

Django ChoiceField,ModelChoiceField验证

我看到forms.ChoiceField使用此代码验证值:

def validate(self, value):
    """
    Validates that the input is in self.choices.
    """
    super(ChoiceField, self).validate(value)
    if value and not self.valid_value(value):
        raise ValidationError(
            self.error_messages['invalid_choice'],
            code='invalid_choice',
            params={'value': value},
        )

def valid_value(self, value):
    "Check to see if the provided value is a valid choice"
    text_value = force_text(value)
    for k, v in self.choices:
        if isinstance(v, (list, tuple)):
            # This is an optgroup, so look inside the group for options
            for k2, v2 in v:
                if value == k2 or text_value …
Run Code Online (Sandbox Code Playgroud)

django validation

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

对象数组中的 Mongo DB 不同值组

假设我有一个像下面这样的文档模型

{
"_id" : "QggaecdDWkZzMmmM8",
"features" : [ 
    {
        "language" : "en",
        "values" : [ 
            {
                "name" : "feature 1",
                "values" : [ 
                    "test", 
                    "best"
                ]
            }, 
            {
                "name" : "feature2",
                "values" : [ 
                    "guest", 
                    "nest"
                ]
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要运行查询并返回特征的唯一名称和值对。就像一个文档的名称特征 1 带有“test”和最佳值,另一个文档具有相同的键(特征 1 具有不同的值,即“guest”),因此结果将是

name: featuer 1 
values: [test, best and guest]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试了以下查询,但最后返回错误

db.getCollection('products').aggregate(
{$unwind: '$features'},
{$group: 
{_id: "$features.values.name"},
name: {$addToSet: '$name'}
})
Run Code Online (Sandbox Code Playgroud)

错误信息是

例外:管道阶段规范对象必须只包含一个字段

mongodb mongodb-query aggregation-framework mongodb-aggregation

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

MongoDB插入带有$的键(美元)

我正在尝试使用一个json对象插入一个集合,该对象包含一个以' $' 开头的键(例如:' $count')。我阅读了mongodb v3.0 常见问题解答,他们提到这不是关键。是否有任何回旋方式插入这样的密钥并将其取回?

mongodb mongodb-query

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

Celery中的递归任务

使用Celery我想写一个这样的任务:

@celery.task
def add_task():
    ....
    if(condition):
        add_task.apply_async(queue="default")
Run Code Online (Sandbox Code Playgroud)

我知道在python中,当你调用递归函数时,有一个最大深度.这种约束是否也适用于芹菜?

python recursion celery

4
推荐指数
1
解决办法
1776
查看次数

MongoDB限制查找结果

如何查询集合并限制返回的结果.假设我有一个500M文档的DB,但我只想搜索并返回前10个匹配而不必搜索整个集合(出于性能原因).

理想情况下,我可以在O(mn)时间内返回第n个到第m个结果.

任何想法,如果这是可能的或如何做到这一点?

mongodb mongodb-query

4
推荐指数
1
解决办法
5377
查看次数

Django模型继承,覆盖字段

我正在阅读使用Django的Python Web Development一书,我在书中找到了这个例子:

 class Book(models.Model):
            title = models.CharField(max_length=100)
            genre = models.CharField(max_length=100)
            num_pages = models.IntegerField()
            authors = models.ManyToManyField(Author)

            def __unicode__(self):
                return self.title

    class SmithBook(Book):
        authors = models.ManyToManyField(Author, limit_choices_to={'name__endswith': 'Smith'})
Run Code Online (Sandbox Code Playgroud)

好像它不起作用:

FieldError:类'SmithBook'中的本地字段'authors'与基类'Book'中类似名称的字段冲突

我使用的是Django 1.5.3,本书适用于Django 1.0.

为什么在Django中继承时无法覆盖字段?是否有可能在Django 1.0中,或者这本书中的错误?

django inheritance

3
推荐指数
1
解决办法
3024
查看次数

ReportLab - 重叠词

嗨,

我正在使用报告实验室生成 pdf。我想绘制一个文本,它是一个Paragraph代表标题的文本,因此,如果标题比段落的可用宽度长,它将在下一行拆分,如果标题太长以适合段落的可用宽度和高度文本将被调整大小。

使用较小的 10 字体可以正常工作,但是,如果我选择具有较大字体的样式,例如:

title_style = ParagraphStyle("title", fontName='Helvetica', fontSize=50, alignment=TA_CENTER, backColor=None)
Run Code Online (Sandbox Code Playgroud)

与下图所示的文本相比,文字是重叠的: 示例图像

这是我的代码:

def draw_on(canvas, x, y, paragraph, style, text, available_width, available_height, min_font_size=8):
    w, h = paragraph.wrap(available_width, available_height)
    temp_font_size = paragraph.style.fontSize

    while temp_font_size > min_font_size:

        if w <= available_width and h <= available_height:
            paragraph.drawOn(canvas, x, y)
            break
        else:

            temp_font_size -= 1
            style.fontSize = temp_font_size
            paragraph = Paragraph(text, style)
            w, h = paragraph.wrap(available_width, available_height)



def generate_pdf():

    c = canvas.Canvas("FirstPage.pdf")

    title_style = ParagraphStyle("title", fontName='Helvetica', fontSize=10, alignment=TA_CENTER, backColor=None)

    title_text …
Run Code Online (Sandbox Code Playgroud)

reportlab

3
推荐指数
1
解决办法
923
查看次数

如何正确创建索引mongodb?

让我说我有这么大的文件.

其中2个得到了这个对象数组;

{
  status: "A",
  group: "public",
  "created.dt": ....
}

{
  status: "A",
  group: "private",
  "created.dt": ....
}
Run Code Online (Sandbox Code Playgroud)

我索引并确保这样:

db.collection.ensureIndex({"created.dt":-1});

db.collection.ensureIndex({"created.dt":-1, "status":1});
db.collection.ensureIndex({"created.dt":-1, "group":1});

db.collection.ensureIndex({"created.dt":-1, "status":1, "group":1});
Run Code Online (Sandbox Code Playgroud)

查询:

db.collection.find(
{
  "status": { 
    $in: ["A", "I"] 
  },
  "asset_group": "public"
},
{
  sort: {
   'created.dt':1
  }
}
).count();
Run Code Online (Sandbox Code Playgroud)

这是错的吗 ?

在我使这个指数仍然缓慢之后.请帮我正确索引.谢谢

mongodb mongodb-query mongodb-indexes

3
推荐指数
1
解决办法
2928
查看次数

属性错误:“用户”对象没有属性“is_admin”

我通过扩展 AbstractBaseUser 自定义了用户模型,用户名仅被接受为电子邮件 ID。这是模型:

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField('email address', unique=True)
    first_name = models.CharField('first name', max_length=30, blank=True)
    last_name = models.CharField('last name', max_length=30, blank=True)
    date_joined = models.DateTimeField('date joined', auto_now_add=True)
    is_active = models.BooleanField('active', default=True)
    is_staff = models.BooleanField(default=False)

    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

class Meta:
    verbose_name = 'user'
    verbose_name_plural = 'users'

def get_full_name(self):
    full_name = '%s %s' % (self.first_name, self.last_name)
    return full_name.strip()

def get_short_name(self):
    return self.first_name

def email_user(self, subject, message, from_email=None, **kwargs):
    send_mail(subject, message, from_email, [self.email], **kwargs)
Run Code Online (Sandbox Code Playgroud)

上述模型的模型管理器是: …

django django-models django-custom-user

3
推荐指数
1
解决办法
3795
查看次数

撤消或删除先前Git提交的更改

假设我有一个提交列表: A > B > C > D > E ,如何从历史记录中删除C中所做的更改A > B > D > E

git git-revert git-rewrite-history

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