在Django中,以下两者之间有什么区别:
Article.objects.values_list('comment_id', flat=True).distinct()
Run Code Online (Sandbox Code Playgroud)
VS
Article.objects.values('comment_id').distinct()
Run Code Online (Sandbox Code Playgroud)
我的目标是获得每个下面的唯一注释ID列表Article
.我已经阅读了文档(实际上已经使用了这两种方法).结果显然似乎相似.
我有以下设置,
CREATE TABLE auth_user ( id int PRIMARY KEY );
CREATE TABLE links_chatpicmessage ();
Run Code Online (Sandbox Code Playgroud)
我正在尝试将一个名为sender
to 的列添加links_chatpicmessage
到另一个名为auth_user
's id
column的表中.
为实现上述目标,我在终端上尝试以下方法:
ALTER TABLE links_chatpicmessage
ADD FOREIGN KEY (sender)
REFERENCES auth_user;
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误:
错误:外键约束中引用的列"sender"不存在
我该如何解决?
使用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"是额外的日期时间对象).继续下去并不多.
我想在我的网站上使用Google字体"Noto Serif".我的问题是,当我使用Google PageSpeed Insights进行测试时,它告诉我除了一件事之外我是完美的:
<link href="https://fonts.googleapis.com/css?family=Noto+Serif" rel="stylesheet">
您的页面有1个阻止的CSS资源.这会导致呈现页面的延迟.在不等待加载以下资源的情况下,无法呈现页面上的上述内容.尝试推迟或异步加载阻止资源,或直接在HTML中内联这些资源的关键部分.
我知道这是一个糟糕的解决方案.它是使用<script>
HTML文件底部的字体链接.该解决方案的问题是,每当您点击我网站上的某些内容时,它都会导致无格式文本的Flash.
我使用jekyll托管与GitHub页面,所以我不认为我可以安装Font Face Observer :(
我在Azure中有一个blob容器,pictures
其中包含各种文件夹(请参阅下面的快照):
我正在尝试删除快照中标题users
和uploads
显示的文件夹,但我保留错误:Failed to delete blob pictures/uploads/. Error: The specified blob does not exist.
有人能说明我如何删除这两个文件夹吗?通过谷歌搜索这个问题,我无法发现任何有意义的东西.
注意:如果您需要,请向我询问更多信息
我有一个Django应用程序,用户发布照片,其他人在照片下留下评论.
留下评论时,我需要通知:
对于(1),我这样做:
#I slice by 25 because I arbitrarily deem anyone beyond that irrelevant.
all_commenter_ids = PhotoComment.objects.filter(which_photo=which_photo).order_by('-id').values_list('submitted_by', flat=True)[:25]
Run Code Online (Sandbox Code Playgroud)
接下来,对于(2),我尝试:
all_relevant_ids = all_commenter_ids.append(which_photo.owner_id)
all_relevant_ids = list(set(all_relevant_ids))
Run Code Online (Sandbox Code Playgroud)
我最终得到一个错误:
'ValuesListQuerySet'对象没有属性'append'
我觉得这很奇怪,因为我正在提取一个values_list.
这不是一个列表对象,在这种情况下,该属性不应该append
工作吗?请解释什么是错的,并提出替代方案.
在我的Django项目中,我运行此命令在localhost上运行项目:
python manage.py runserver
它导致错误:
Importerror: No module named memcache
但是,我已经通过以下方式满足了要求: sudo apt-get install python-memcache
特别是,如果我进入我的virtualevn之外的python shell并尝试import memcache
,它工作正常.但是,在我的virtualenv中,如果我进入python shell并尝试import memcache
,我得到上面列出的相同导入错误.这是怎么回事?
想象一下,我有一个python字典,其中键是现有用户ID,值是要添加到这些用户现有分数的分数.
例如:( {1: 1580, 4: 540, 2: 678}
这可以拉伸到n
k,v对)
我需要更新所有这些用户对象的分数(updated_score = original_score + new_score).一种方法是迭代,如下所示:
from django.db.models import F
scores = {1: 1580, 4: 540, 2: 678}
for user_id,score_to_add in scores.iteritems():
UserProfile.objects.filter(user_id=user_id).update(score=F('score')+score_to_add)
Run Code Online (Sandbox Code Playgroud)
但那是多个数据库调用.我可以一次通话吗?一个说明性的例子会很棒.正如您所猜测的那样,这是一个Django项目.
这个问题是关于Redis的持久性.
我正在使用redis作为社交网站的"快速后端".这是一个单一的服务器设置.我一直在将PostgreSQL职责转移到Redis.目前etc/redis/redis.conf
,appendonly设置设置为appendonly no
.快照设置save 900 1
,save 300 10
,save 60 10000
.所有这一切都适用于生产和开发.根据生产日志,save 60 10000
可以大量调用.这是否意味着实际上,我每隔60秒就会获得一次备份?
一些文献建议将AOF和RDB备份一起使用.因此,我一直在努力转动appendonly on
和使用appendfsync everysec
.任何有过双方经验的人:
1)是否会使用appendonly on
并appendfsync everysec
导致性能下降?它会击中CPU吗?写入负载偏高.
2)一旦我用这些新设置重启redis服务器,我仍然会丢失我的数据的最后60秒,对吗?
3)重启时间是否需要担心?我的dump.rdb
档案很小; 〜90MB.
我正试图找到更多关于redis持久性的信息,并且正确地得到我的期望.就个人而言,在遇到灾难的情况下,我很好地丢失了60个数据,因此我是否应该使用AOF也是我在思考的问题.随意加入.谢谢!
我有两台redis服务器在同一台机器上运行.第二个日志文件有几个实例,其中包含以下通知:
[50818] 19 Feb 06:41:05.007 * 10 changes in 300 seconds. Saving...
[50818] 19 Feb 06:41:05.007 # Can't save in background: fork: Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)
相比之下,第一个日志文件仅包含成功的数据库保存.如果我内存不足,我估计两者都有类似的日志.令我感到困惑的是,只有一个有这个问题,另一个没有.任何线索?
此外,研究引导我阅读这篇博文,该博客认为,如果我sysctl vm.overcommit_memory=1
在命令行上这样做,问题就可以得到改善.没有解释这有何帮助.有人可以在redis的背景下解释这里发生了什么吗?
django ×5
django-orm ×3
python ×2
redis ×2
alter-table ×1
asynchronous ×1
azure ×1
css ×1
database ×1
fonts ×1
foreign-keys ×1
jekyll ×1
memcached ×1
postgresql ×1