我想让我的User对象都具有相同的基本行为,为此我需要向Anonymous User添加几个方法/属性.
我已经将User子类化为更丰富的用户对象,但我想知道是否有人对匿名用户做了同样的事情?如果有任何首选方式!
在调试我的django应用程序时,我使用pdb进行交互式调试pdb.set_trace().
但是,当我修改文件时,本地django webserver重新启动,然后我无法看到我在终端中输入的内容,直到我输入reset.
无论如何这是自动发生的吗?它可能真的很烦人,必须取消runserver并重置并重新启动它.我被告知它不会发生在其他操作系统(ubuntu)上,所以无论如何都要让它不会发生在Mac上吗?(我正在使用Snow Leopard).
例如..
class Page(Document)
tags = ListField(StringField())
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们可以像这样在标签列表中找到一个值.
Page.objects(tags='coding')
Run Code Online (Sandbox Code Playgroud)
如果标签像['coding','x','y']那么文件将匹配......
但我的问题是如何找到不在列表字段中的值.
我的错误代码将是..
Page.objects(tags!='coding')
Run Code Online (Sandbox Code Playgroud)
要么
Page.objects(tags__not = 'coding')
Run Code Online (Sandbox Code Playgroud)
要么
Page.objects(tags__not__in = 'coding')
Run Code Online (Sandbox Code Playgroud)
但是......他们不仅仅是工作..
如何查询ListField中没有给定值的文档?
我想将一个新的ListField EmbeddedDocument附加到现有的ListField EmbeddedDocument文档中.换句话说,将新文档附加到属于列表中的文档的列表中.
我的模型:帖子可以包含多个评论,每个评论可以有几个赞:
class Post(Document):
txt = StringField()
comments = ListField(EmbeddedDocumentField(Comment))
class Comment(EmbeddedDocument):
comment = StringField()
comment_id = ObjectIdField()
likes = ListField(EmbeddedDocumentField(Like))
class Like(EmbeddedDocument):
user = ReferenceField(User)
date = DateTimeField(default=datetime.utcnow,required=True)
Run Code Online (Sandbox Code Playgroud)
我的代码:(它没有工作'append'命令不存在,只有'set'存在)
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).update(append_comments__S__likes=newLike)
Run Code Online (Sandbox Code Playgroud)
理想的解决方案是:
def appendNewLike():
user = {..}
target = ObjectId(commentId)
newLike = Like(user=user)
Product.objects(comments__comment_id=target).comments.likes.append(newLike)
Run Code Online (Sandbox Code Playgroud)
评论?建议?
我有很多地址样式字符串,我想以理性的方式对它们进行排序.
我正在寻找填充字符串中的所有数字,以便:"Flat 12A High Rise"变为"Flat 00012A High Rise",字符串中可能有多个数字.
到目前为止我有:
def pad_numbers_in_string(string, padding=5):
numbers = re.findall("\d+", string)
padded_string = ''
for number in numbers:
parts = string.partition(number)
string = parts[2]
padded_string += "%s%s" % (parts[0], parts[1].zfill(padding))
padded_string += string
return padded_string
Run Code Online (Sandbox Code Playgroud)
可以改进 - 看起来很麻烦!
所以我根据教程创建了一个django项目和应用程序,我拥有MongoDB引擎所需的所有依赖项,所有这些似乎都工作正常,花花公子直到我尝试启用管理界面.
我取消注释了需求位,并将"django_mongodb_engine"和"djangotoolbox"添加到settings.py中的apps部分
当我尝试进入localhost:8000/admin时出现错误:
"AutoField(默认主键)值必须是表示MongoDB上的ObjectId的字符串(取而代之的是u'1'.请确保您的SITE_ID包含有效的ObjectId字符串."
经过一些谷歌搜索显然我必须运行manage.py tellsiteid并且它会向我吐出我可以在我的settings.py中使用的ID,这将使错误消失,但是当我尝试运行manage.py tellsiteid时,我得到:
Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_manager(settings)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site- packages/django/core/management/__init__.py", line 438, in execute_manager utility.execute()
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/core/management/base.py", line 351, in handle
return self.handle_noargs(**options)
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django_mongodb_engine/management/commands/tellsiteid.py", line 8, in handle_noargs
site_id = self._get_site_id()
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django_mongodb_engine/management/commands/tellsiteid.py", line 19, in _get_site_id
return Site.objects.get().id
File "/Users/holografix/.virtualenvs/django_nonrel_env/lib/python2.7/site-packages/django/db/models/manager.py", line …Run Code Online (Sandbox Code Playgroud) 有人用mongengine进行地理空间搜索吗?我似乎无法让它工作!GeoPointField中必须包含的数据格式是什么?
我该如何格式化?我在文档中找不到任何有关格式化的内容!
我正在尝试分析我的查询性能,并希望改善它们。我使用mongoengine包装器。尽管我正在使用查询日志并获取原始mongo查询并运行explain,但我无法从mongoengine中找到使用explain()的方法,但我想通过mongoengine使用explain来减轻监控的麻烦。有任何想法吗
我用我的服务器安装了django和pymongo和mongoengine.我的django项目settings.py文件:
# Django settings
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'RTSdatabase', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '27017', # Set to empty …Run Code Online (Sandbox Code Playgroud) 我有一个ListField(DictField)包含像 -
{'user_id': '12345', 'timestamp' : 'datetime-object'}
Run Code Online (Sandbox Code Playgroud)
在mongoengine中,如何从user_id上查询的List中删除元素.例如,我想删除具有特定user_id的条目.我试过以下 -
update_one(pull__notes__user_id = '12345')
Run Code Online (Sandbox Code Playgroud)
这notes是集合的名称.
此语句返回1但不会从List中删除该元素.我怎样才能做到这一点?
我正在使用Flask和MongoEngine开发一个博客引擎,我的帖子需要顺序ID.
我需要MongoEngine为每个新帖子创建一个新的ID,所以我想做这样的事情:
class Post(Document):
title = StringField(required=True)
content = StringField(required=True)
published_at = datetime.utcnow()
id = Post.objects.count() + 1
Run Code Online (Sandbox Code Playgroud)
这会有用吗?有一个更好的方法吗?
我有一个列出一周中几天的数组:
days = ['Monday', 'Tuesday', 'Wednesday']
Run Code Online (Sandbox Code Playgroud)
以人类可读的格式输出它的最简单/最好的方法是什么:
Monday, Tuesday and Wednesday
Run Code Online (Sandbox Code Playgroud)
我所拥有的最好的是相当难看:
', '.join(days[:-2]+['']) + ' and '.join(days[-2:])
Run Code Online (Sandbox Code Playgroud) 如果我有一个列表字段类似于下面的集合.
class Post(Document):
tags = ListField(StringField())
Run Code Online (Sandbox Code Playgroud)
假设我有一个贴有标签的帖子:有趣,有趣.
如果我想搜索带有标签的帖子满足任何搜索条件,我该怎么办?
如果我将搜索词放在"有趣"和"奇妙"中,则上面的帖子应该在结果集中.
我试图阅读文档,但似乎没有这样的运算符."all"和"in"相似但不能执行我想要的.
谢谢!
干杯,克里斯
mongodb ×9
mongoengine ×7
python ×7
django ×5
pymongo ×3
string ×2
append ×1
geolocation ×1
geospatial ×1
join ×1
listfield ×1
macos ×1
pdb ×1
terminal ×1