给定一个过滤器方法,如果满足某些条件则返回true,是否可以在HTML中调用其相反的方法,例如使用:
"item in items | filter:!AllDay"
Run Code Online (Sandbox Code Playgroud)
代替
"item in items | filter:AllDay"
Run Code Online (Sandbox Code Playgroud)
?或者你必须维护两个单独的过滤方法(一个用于假,一个用于真)?
对于像这样的模型:
class Item(models.Model):
notes = models.TextField(blank=True)
....
Run Code Online (Sandbox Code Playgroud)
我正在尝试为"notes"字段非空的所有项目执行简单的查询集.没有在文档中提到这种功能,但通过对错误报告的评论,发现您实际上可以与大于:
items_with_notes = Item.objects.filter(notes__gt='')
Run Code Online (Sandbox Code Playgroud)
这有效,但感觉就像一个黑客."大于"似乎应该用于数字比较,而不是用于检查文本字段是否为空.惊讶不要找到像:
Item.objects.exclude(notes=blank)
Run Code Online (Sandbox Code Playgroud)
我忽略了什么,或者是.filter(notes__gt ='')正确的方法吗?
使用Rails 3.2.
我有六个控制器,并希望保护它们中的一些(但不是全部)http_basic_authenticate_with.
我不想手动添加http_basic_authenticate_with到每个控制器(我可以在将来添加另一个控制器而忘记保护它!).看来答案是把它放在application_controller.rb与:exceptARG这将列出应控制器不被保护.问题是,:except子句需要方法名称而不是外部控制器模块名称,例如:
http_basic_authenticate_with :name => 'xxx', :password => 'yyy', :except => :foo, :bar
Run Code Online (Sandbox Code Playgroud)
然后我想"等等,因为我已经将受保护的控制器分组routes.rb,让我们把它放在那里." 所以我在我的路线中试过这个:
scope "/billing" do
http_basic_authenticate_with :name ...
resources :foo, :bar ...
end
Run Code Online (Sandbox Code Playgroud)
但现在我明白了
undefined method `http_basic_authenticate_with'
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法来解决这个问题?
我在我的.bash_profile(Mac)中定义了一组核心的bash别名.但是当我激活pipenv时pipenv shell,我的别名不起作用,而bash alias命令什么都不返回.
是否需要一个配置步骤来生成从父shell继承bash别名的pipenv shell?
关于缓存的Travis 文档没有具体提到如何缓存从pipenv的Pipfile安装的python依赖项,而不是pip通常的requirements.txt.我尝试设置每个文档的pip缓存,但是构建时间根本没有改进,我看到pipenv在每次运行时安装它的deps.
这是我目前使用的语法 - 正确的语法是什么?(或甚至支持?)
language: python
python:
- "3.6"
cache: pip
cache:
directories:
- proj/static/node_modules
- $HOME/.cache/pip
Run Code Online (Sandbox Code Playgroud) 我不是在构建单页应用程序,而是在一个地方使用AngularJS的"传统"站点.我遇到了以下问题(使用1.3.0-beta.6):
标准的工作锚链:
<a href="#foo">Link text</a>
... [page content]
<a id="foo"></a>
<h1>Headline</h1>
[more content]
Run Code Online (Sandbox Code Playgroud)
这很好.现在我在某处介绍一个模板部分:
<script type="text/ng-template" id="test-include.html">
<p>This text is in a separate partial and inlcuded via ng-include.</p>
</script>
Run Code Online (Sandbox Code Playgroud)
通过以下方式调用:
<div ng-include="'test-include.html'"></div>
Run Code Online (Sandbox Code Playgroud)
部分包含正确,但锚链接不再起作用.单击"链接文本"现在将显示的URL更改为/#/foo而不是/#foo页面位置不会更改.
我的理解是使用ng-include隐式告诉Angular我想使用routes系统并覆盖浏览器的本机锚链接行为.我已经看到通过更改我的html锚点链接来解决这个问题的建议#/#foo,但由于其他原因我无法做到这一点.
我不打算使用路由系统 - 我只是想在ng-include不弄乱浏览器行为的情况下使用它.这可能吗?
时不时地,您需要在Django中重命名模型(或者,在我遇到的最近一个案例中,将一个模型拆分为两个,使用新的/不同的名称).是的,正确的计划有助于避免这种情况,但有时候现实会介入.
重命名数据库中的相应表并修复受影响的代码后,仍然存在一个问题:授予用户或组以对这些模型进行操作的任何权限仍引用旧的模型名称.是否有任何自动或半自动的方法来解决这个问题,还是只是手动数据库手术的问题?(在开发中,你可以删除auth_permissions表和syncdb来重新创建它,但生产并不那么简单).
我正在使用regroup模板标记在Choices字段上对queryset输出进行分组.在模型中:
RESOURCE_TYPES = (
('tut','External tutorial'),
('read','Additional reading'),
('org','Company or organization'),
)
restype = models.CharField('Resource type',max_length=6,choices=RESOURCE_TYPES)
Run Code Online (Sandbox Code Playgroud)
在视图中:
resources = Resource.objects.filter(tutorial=tutorial)
Run Code Online (Sandbox Code Playgroud)
在模板中:
{% regroup resources by restype as resource_list %}
{% for type in resource_list %}
<h3>{{type.grouper}}</h3>
Run Code Online (Sandbox Code Playgroud)
所以type.grouper在页面上呈现为"tut"或"org",而不是长形式.通常,您将使用get_foo_display语法来获取选择的值,而不是键.但经过重组之后,这个价值似乎无法获得.我无法在{{type.grouper}}上找到使用get_foo_display.
当你想到它时,这是有道理的,但是解决方法是什么?谢谢.
这些模型允许我为一个工具建立多个人工“编辑器”:
class ToolPageEditors(models.Model):
person = models.ForeignKey('people.UserProfile')
page = ParentalKey('ToolPage', related_name='toolpage_editors')
class ToolPage(BaseAsset):
content_panels = BaseAsset.content_panels + [
InlinePanel('toolpage_editors', label="Tool Editors")
]
Run Code Online (Sandbox Code Playgroud)
但是每个ToolPageEditors实例都是一个包含 3,000 多个用户的下拉列表。我想将该下拉列表的内容限制为给定组中的人员。我知道如何通过覆盖管理表单在 Django 中执行此操作,但是我无法弄清楚如何在 Wagtail 中完成它。
建议?谢谢。
更新:
关键是limit_choices_to。修改类如下,它的工作原理:
class ToolPageManagers(models.Model):
def get_tool_editors():
g = Group.objects.get(name='Tool Editors')
return {'groups__in': [g, ]}
person = models.ForeignKey('people.UserProfile', limit_choices_to=get_tool_editors)
page = ParentalKey('ToolPage', related_name='toolpage_editors')
Run Code Online (Sandbox Code Playgroud) Django允许您创建一个外键键入用户的模型,并在设置中将其定义为包含用户帐户附加数据的官方"配置文件"模型.django-profiles允许您轻松显示/创建/编辑该配置文件数据.但用户的主电子邮件地址是其主要帐户的一部分,而不是其扩展配置文件的一部分.所以当你放
{{ form }}
Run Code Online (Sandbox Code Playgroud)
在个人资料/ edit_profile模板中,主电子邮件地址不会显示.您可以使用手动检索它
{{ user.email }}
Run Code Online (Sandbox Code Playgroud)
但是当提交时,对它的更改不会保存回帐户.我假设已经创建了一个自定义ModelForm,例如:
class ProfileForm(ModelForm):
class Meta:
model = Parent
exclude = ('family','user','board_pos','comm_job',)
Run Code Online (Sandbox Code Playgroud)
并且使用urlconf将ProfileForm传递给django-profiles的视图代码:
('^profiles/edit', 'profiles.views.edit_profile', {'form_class': ProfileForm,}),
Run Code Online (Sandbox Code Playgroud)
如果您想让用户更改他们的名字或姓氏,也会出现同样的问题.在使用django-profiles时,让用户更改自己的电子邮件地址或名称的最佳方法是什么?