我想在基于类的视图中获取当前登录用户.我可以通过从请求对象中提取用户来做到这一点,但我怎样才能获得该对象?
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) 我正在尝试编写一个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) 我想在链中使用一个组(或块),例如:
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) 我看到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) 假设我有一个像下面这样的文档模型
{
"_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
我正在尝试使用一个json对象插入一个集合,该对象包含一个以' $' 开头的键(例如:' $count')。我阅读了mongodb v3.0 常见问题解答,他们提到这不是关键。是否有任何回旋方式插入这样的密钥并将其取回?
使用Celery我想写一个这样的任务:
@celery.task
def add_task():
....
if(condition):
add_task.apply_async(queue="default")
Run Code Online (Sandbox Code Playgroud)
我知道在python中,当你调用递归函数时,有一个最大深度.这种约束是否也适用于芹菜?
如何查询集合并限制返回的结果.假设我有一个500M文档的DB,但我只想搜索并返回前10个匹配而不必搜索整个集合(出于性能原因).
理想情况下,我可以在O(mn)时间内返回第n个到第m个结果.
任何想法,如果这是可能的或如何做到这一点?
我正在阅读使用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中,或者这本书中的错误?
嗨,
我正在使用报告实验室生成 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) 让我说我有这么大的文件.
其中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)
这是错的吗 ?
在我使这个指数仍然缓慢之后.请帮我正确索引.谢谢
我通过扩展 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)
上述模型的模型管理器是: …
假设我有一个提交列表:
A > B > C > D > E ,如何从历史记录中删除C中所做的更改A > B > D > E?
mongodb ×5
django ×4
celery ×2
python ×2
celery-task ×1
git ×1
git-revert ×1
inheritance ×1
recursion ×1
reportlab ×1
validation ×1