我正在开发一个多租户应用程序,其中一些用户可以定义自己的数据字段(通过管理员)以收集表单中的其他数据并报告数据.后一位使JSONField不是一个很好的选择,所以我有以下解决方案:
class CustomDataField(models.Model):
"""
Abstract specification for arbitrary data fields.
Not used for holding data itself, but metadata about the fields.
"""
site = models.ForeignKey(Site, default=settings.SITE_ID)
name = models.CharField(max_length=64)
class Meta:
abstract = True
class CustomDataValue(models.Model):
"""
Abstract specification for arbitrary data.
"""
value = models.CharField(max_length=1024)
class Meta:
abstract = True
Run Code Online (Sandbox Code Playgroud)
请注意CustomDataField如何具有ForeignKey to Site - 每个站点将具有一组不同的自定义数据字段,但使用相同的数据库.然后,各种具体数据字段可以定义为:
class UserCustomDataField(CustomDataField):
pass
class UserCustomDataValue(CustomDataValue):
custom_field = models.ForeignKey(UserCustomDataField)
user = models.ForeignKey(User, related_name='custom_data')
class Meta:
unique_together=(('user','custom_field'),)
Run Code Online (Sandbox Code Playgroud)
这导致以下用途:
custom_field = UserCustomDataField.objects.create(name='zodiac', site=my_site) #probably created …
Run Code Online (Sandbox Code Playgroud) 使用Django的普通测试运行器,您可以深入研究在特定应用程序,TestCase的特定子类或TestCase的特定子类中的特定测试中运行测试.
例如:
./manage.py test myapp.MyTestCase.test_something
Run Code Online (Sandbox Code Playgroud)
但是,除了测试特定应用程序之外,django-nose似乎不支持任何其他内容.我如何复制最后两个行为?
我想抓住Django.我在Eclipse上使用Pydev.我写了一个简单的注册页面,我无法工作.Eclipse抱怨User.DoesNotExist未定义.最有可能的是,我遗漏了一些微不足道的东西.这是代码的相关部分:
from django.contrib.auth.models import User
...
class SignUpForm (forms.Form):
...
def clean_username (self):
try:
User.objects.get(username=self.cleaned_data['username'])
except User.DoesNotExist:
return self.cleaned_data['username']
raise forms.ValidationError(USERNAME_ALREADY_IN_USE)
...
Run Code Online (Sandbox Code Playgroud) 我以编程方式生成JSON-Schema架构.我希望确保架构有效.是否有我可以验证我的架构的架构?
请注意我在该句和标题中使用了两次模式.我不想根据我的架构验证数据,我想验证我的架构.
我正在开发Angular.js页面并对html'partial'进行更改.刷新页面会导致Firefox正确地从服务器重新请求主html页面,但是后续的"部分"模板(客户端呈现)永远不会被重新请求,而是从BFCache中获取,因此对这些文件的更改不会检测.
Firebug的屏幕截图:
我可以通过开发服务器(Django)确认永远不会请求那些部分.
我尝试了各种刷新,包括Reload Plus扩展.
我正在处理的请求对象具有键"地址"的以下值:
u"{u'city': u'new-york', u'name': u'Home', u'display_value': u'2 Main Street'}"
Run Code Online (Sandbox Code Playgroud)
我需要将这个unicode对象作为字典进行操作.不幸的是,json.loads()失败,因为它不是json兼容的对象.
有什么方法可以解决这个问题吗?我是否必须使用json.JSONDecoder对象?
假设我有一个这样的表格:
<form id='myform'>
Favorite colors?
<input type='checkbox' name='color' value='Green'>Green
<input type='checkbox' name='color' value='Blue'>Blue
<input type='checkbox' name='color' value='Red'>Red
<input type='submit' value='Submit'>
</form>
Run Code Online (Sandbox Code Playgroud)
如何使用webtest的表单库来测试提交多个值?
我有一个巨大的芹菜任务基本上像这样工作:
@task
def my_task(id):
if settings.DEBUG:
print "Don't run this with debug on."
return False
related_ids = get_related_ids(id)
chunk_size = 500
for i in xrange(0, len(related_ids), chunk_size):
ids = related_ids[i:i+chunk_size]
MyModel.objects.filter(pk__in=ids).delete()
print_memory_usage()
Run Code Online (Sandbox Code Playgroud)
我还有一个manage.py命令,只运行my_task(int(args [0])),因此可以排队或在命令行上运行.
在命令行上运行时,print_memory_usage()会显示相对恒定的内存量.
当在celery中运行时,print_memory_usage()显示内存量不断增加,一直持续到进程被终止(我使用Heroku的内存限制为1GB,但其他主机会有类似的问题.)内存泄漏似乎与chunk_size对应; 如果我增加chunk_size,每次打印的内存消耗会增加.这似乎暗示芹菜正在记录查询本身,或者我的堆栈中的其他东西.
芹菜会在其他地方记录查询吗?
其他说明:
这是一个由两部分组成的问题.
我的文件看起来像这样:
{"url": "https://someurl.com",
"content": "searchable content here",
"hash": "c54cc9cdd4a79ca10a891b8d1b7783c295455040",
"headings": "more searchable content",
"title": "Page Title"}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是如何检索"标题" 正好是 "无标题"的所有文档.我不希望出现标题为"此文档没有标题"的文档.
我的第二个问题是如何检索所有文件,其中'url' 恰好出现在一长串网址中.
我正在使用pyelasticsearch,但curl中的通用答案也可以.
我在自制python框架中有一个大型代码库。我将逐步将代码移至Django,但与此同时,需要支持通过旧系统登录。旧系统在用户登录后使用cookie来识别用户。
我不希望用户通过Django登录,但我确实希望能够使用@login_required以及依赖Django身份验证系统的多个应用程序,例如admin,django-tagging和django-comments。
集成两个身份验证系统的最佳方法是什么?这两个代码库都在同一个python进程中运行(通过可根据每个请求切换应用程序的wsgi中间件),并且可以根据需要相互加载模块。
如何从其他模型中引入信息?
我有两个型号Article
,和ArticleBody
包含主要信息的文章和包含身体和图像信息循环的ArticleBody
class Article(models.Model):
author = models.ForeignKey(User)
title = models.CharField(max_length=100)
excerpt = models.CharField(max_length=140, null=True, blank=True, help_text='A description no longer than 140 characters that explains what the article is about, important for SEO')
category = models.ManyToManyField(Category)
date_published = models.DateTimeField()
slug = models.SlugField(null=True)
status = models.CharField(choices=STATUS, max_length=2, default='DR')
tags = TagField(default='', null=True, blank=True, help_text='Just add a comma between the tags i.e. "My very important name, Hunting, Scope, Rifle"')
source_name = models.CharField(default='', blank=True, null=True, help_text='Outdoor Magazine', max_length=100)
source_url = …
Run Code Online (Sandbox Code Playgroud) python ×8
django ×6
angularjs ×1
api ×1
bfcache ×1
celery ×1
django-nose ×1
dynamic ×1
firefox ×1
json ×1
jsonschema ×1
legacy-code ×1
memory-leaks ×1
nosetests ×1
paste ×1
pydev ×1
pylons ×1
tastypie ×1
testing ×1
unit-testing ×1
webob ×1
webtest ×1