我正试图找到一种方法来实现自定义QuerySet和自定义Manager而不会破坏DRY.这是我到目前为止:
class MyInquiryManager(models.Manager):
def for_user(self, user):
return self.get_query_set().filter(
Q(assigned_to_user=user) |
Q(assigned_to_group__in=user.groups.all())
)
class Inquiry(models.Model):
ts = models.DateTimeField(auto_now_add=True)
status = models.ForeignKey(InquiryStatus)
assigned_to_user = models.ForeignKey(User, blank=True, null=True)
assigned_to_group = models.ForeignKey(Group, blank=True, null=True)
objects = MyInquiryManager()
Run Code Online (Sandbox Code Playgroud)
这很好,直到我做这样的事情:
inquiries = Inquiry.objects.filter(status=some_status)
my_inquiry_count = inquiries.for_user(request.user).count()
Run Code Online (Sandbox Code Playgroud)
这会立即打破一切,因为QuerySet它没有相同的方法Manager.我已经尝试创建一个自定义QuerySet类,并在其中实现它MyInquiryManager,但我最终复制了所有的方法定义.
我也发现这个片段有效,但我需要传递额外的参数,for_user因此它会因为重新定义而严重依赖get_query_set.
有没有办法在不重新定义子类QuerySet和Manager子类中的所有方法的情况下执行此操作?
我正在尝试为列出django_tables对象创建一个通用表.我已经完成了所有工作,除了get_absolute_urls()我的User对象返回:
/users/<username>/
Run Code Online (Sandbox Code Playgroud)
虽然我可以创建此URL,但它与网站布局的其余部分不匹配,所以我正在寻找另一种方法来执行此操作.有没有办法在不破坏内置身份验证和其他功能的情况下覆盖此值?
我希望将表单生成器集成到我正在使用的站点中,但我希望找到一个具有我正在寻找的部分或大部分功能的库.
我正在寻找一个库,它将为我提供一个很好的GUI来构建表单,以及一个JSON(或XML,或类似的)输出,我可以在django后端使用它.我打算用它django来输出完成的表格.
我试过通过谷歌运行这个,但这只会让那些通过在线创建和托管表单而创业的公司产生.但没有任何形式的图书馆.
有什么建议?
我试图异步使用Web服务,因为它需要45秒才能返回.不幸的是,这个Web服务也有些不可靠,可能会出错.我已经设置django-celery并执行了我的任务,这些工作正常,直到任务失败max_retries.
这是我到目前为止:
@task(default_retry_delay=5, max_retries=10)
def request(xml):
try:
server = Client('https://www.whatever.net/RealTimeService.asmx?wsdl')
xml = server.service.RunRealTimeXML(
username=settings.WS_USERNAME,
password=settings.WS_PASSWORD,
xml=xml
)
except Exception, e:
result = Result(celery_id=request.request.id, details=e.reason, status="i")
result.save()
try:
return request.retry(exc=e)
except MaxRetriesExceededError, e:
result = Result(celery_id=request.request.id, details="Max Retries Exceeded", status="f")
result.save()
raise
result = Result(celery_id=request.request.id, details=xml, status="s")
result.save()
return result
Run Code Online (Sandbox Code Playgroud)
不幸的是,MaxRetriesExceededError没有被抛出retry(),所以我不知道如何处理这项任务的失败.Django已经将HTML返回给客户端,我正在检查Result通过AJAX 的内容,它永远不会达到完全失败f状态.
所以问题是:当Celery任务超过时,如何更新我的数据库max_retries?
我有一张中等大小的桌子,目前有277k的记录,我正在尝试FULLTEXT搜索.搜索似乎非常快,直到它进入发送数据阶段.
桌子:
CREATE TABLE `sqinquiries_inquiry` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ts` datetime NOT NULL,
`names` longtext NOT NULL,
`emails` longtext NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `sqinquiries_inquiry_search` (`names`,`emails`)
) ENGINE=MyISAM AUTO_INCREMENT=305560 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT * FROM `sqinquiries_inquiry` WHERE (
MATCH (`sqinquiries_inquiry`.`names`) AGAINST ('smith' IN BOOLEAN MODE) OR
MATCH (`sqinquiries_inquiry`.`emails`) AGAINST ('smith' IN BOOLEAN MODE)
) ORDER BY `sqinquiries_inquiry`.`id` DESC LIMIT 100
Run Code Online (Sandbox Code Playgroud)
简介:( 我剪掉了看似无用的信息)
+-------------------------+----------+
| Status | Duration |
+-------------------------+----------+
| preparing | 0.000014 | …Run Code Online (Sandbox Code Playgroud) 我正在尝试Activty为一个大型(一次300多个)Inquiry对象列表创建一个对象.我有一个ModelForm被回发的单一,我需要创建单独的实例,并将它们附加到我的Inquiry通过a GenericForeignKey.我们来看一些代码:
models.py:
class InquiryEntry(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
entry = generic.GenericForeignKey('content_type', 'object_id')
class Inquiry(models.Model):
entries = models.ManyToManyField('InquiryEntry')
# And many more fields.
def add_entry(self, obj):
entry = self.entries.create(entry=obj)
self.save()
return entry
class Activity(models.Model):
ts = models.DateTimeField(auto_now_add=True)
due_date = models.DateField(auto_now=False)
## And many more fields.
Run Code Online (Sandbox Code Playgroud)
views.py:
def bulk_create_activities(request):
activity_form = ActivityForm()
if request.method == "POST":
activity_form = ActivityForm(request.POST)
if activity_form.is_valid():
pks = [int(x) for x in request.POST.get('pks', '').split(',')]
for …Run Code Online (Sandbox Code Playgroud) 我在Django {% cycle %}模板标签中遇到了一个有趣的"疏忽" .这被列为一个错误,但我想知道是否有一个解决方法呢?
{% for r1 in range_0_2 %}
{% for r2 in range_0_3 %}
{{ r1 }}-{{ r2 }}-{{ cycle 'even' 'odd' }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这会产生:
0-0-even
0-1-odd
0-2-even
1-0-odd
1-1-even
1-2-odd
Run Code Online (Sandbox Code Playgroud)
它应该产生:
0-0-even
0-1-odd
0-2-even
1-0-even
1-1-odd
1-2-even
Run Code Online (Sandbox Code Playgroud) 我正在尝试理解和发送给我使用ACORD XML表单(保险中的通用格式)的XPath.他们发给我的XPath是(为简洁而截断):
./PersApplicationInfo/InsuredOrPrincipal[InsuredOrPrincipalInfo/InsuredOrPrincipalRoleCd="AN"]/GeneralPartyInfo
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的地方是Python的lxml库告诉我这[InsuredOrPrincipalInfo/InsuredOrPrincipalRoleCd="AN"]是一个invalid predicate.我无法在XPath规范中的任何地方找到标识此语法的谓词,以便我可以修改此谓词.
是否有关于此谓词选择的文档?此外,这甚至是一个有效的谓词,还是在某个地方被破坏了?
可能相关:
我相信我正在使用的公司是一个MS商店,所以这个XPath可能在C#或该堆栈中的其他语言中有效吗?我不完全确定.
更新:
根据评论需求,这里有一些额外的信息.
XML示例:
<ACORD>
<InsuranceSvcRq>
<HomePolicyQuoteInqRq>
<PersPolicy>
<PersApplicationInfo>
<InsuredOrPrincipal>
<InsuredOrPrincipalInfo>
<InsuredOrPrincipalRoleCd>AN</InsuredOrPrincipalRoleCd>
</InsuredOrPrincipalInfo>
<GeneralPartyInfo>
<Addr>
<Addr1></Addr1>
</Addr>
</GeneralPartyInfo>
</InsuredOrPrincipal>
</PersApplicationInfo>
</PersPolicy>
</HomePolicyQuoteInqRq>
</InsuranceSvcRq>
</ACORD>
Run Code Online (Sandbox Code Playgroud)
代码示例(使用完整的XPath而不是代码段):
>>> from lxml import etree
>>> tree = etree.fromstring(raw)
>>> tree.find('./InsuranceSvcRq/HomePolicyQuoteInqRq/PersPolicy/PersApplicationInfo/InsuredOrPrincipal[InsuredOrPrincipalInfo/InsuredOrPrincipalRoleCd="AN"]/GeneralPartyInfo/Addr/Addr1')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "lxml.etree.pyx", line 1409, in lxml.etree._Element.find (src/lxml/lxml.etree.c:39972)
File "/Library/Python/2.5/site-packages/lxml-2.3-py2.5-macosx-10.3-i386.egg/lxml/_elementpath.py", line 271, in find
it = …Run Code Online (Sandbox Code Playgroud) 我正在试图找出如何在htmldoc的每一页输出上重复一组表头.我插入CSS方式(下面)看看是否可行,但我不相信htmldoc对CSS做了很多事情.
基本问题是:在输出到PDF时,有没有办法让htmldoc像这个CSS一样?
thead {display: table-header-group;}
Run Code Online (Sandbox Code Playgroud) 我是Dancer的新手,但我正在尝试将其配置为在Docker容器中工作.因此,我需要从环境中获取数据库设置.
在我的情况下,我有DB_PORT_3306_TCP_ADDR,DB_PORT_3306_TCP_PORT来自Docker.不幸的是,Dancer::Plugin::Database在我可以更改数据库以使用这些变量之前,模块是错误的.
use Dancer ':syntax';
use Dancer::Plugin::Database;
if ($ENV{DB_PORT_3306_TCP}) {## Connected via docker.
database->({
driver => 'mysql',
username => 'username',
password => 'password',
host => $ENV{DB_PORT_3306_TCP_ADDR},
port => $ENV{DB_PORT_3306_TCP_PORT},
database => $ENV{DB_ENV_MYSQL_DATABASE},
});
}
Run Code Online (Sandbox Code Playgroud)
所以问题是,有没有一种很好的方法从环境变量配置Dancer,而不是通过静态YAML?