小编Ben*_*rts的帖子

没有自定义表单的Django模型字段验证

我在我的模型中使用了django DateField.

class CalWeek(models.Model):
  start_monday = models.DateField(verbose_name="Start monday")
Run Code Online (Sandbox Code Playgroud)

我有一个特定于我的modelField的自定义验证方法:我想确保它实际上是星期一.我目前没有理由在管理员中使用自定义的ModelForm - Django生成的一个就好了.创建一个自定义表单类只是为了我可以利用django Form类提供的clean_start_monday(self)1糖似乎只是添加一些字段验证的很多工作.我意识到我可以覆盖模型的干净方法并在ValidationError那里提升.但是,这并不理想:这些错误归结为非字段错误并最终位于页面顶部,而不是有问题的用户输入旁边 - 不是理想的用户体验.

有没有一种简单的方法来验证特定的模型字段,并在管理员的字段旁边显示您的错误消息,而不必使用自定义表单类?

django django-models

13
推荐指数
1
解决办法
8589
查看次数

更快的替代manage.py collectstatic(w/s3boto存储后端)将静态文件同步到s3?

我一直在使用s3boto的S3BotoStorage作为我的静态文件后端,并使用./manage.py collectstatic将文件同步到我的aws s3存储桶(暂存和生产).它工作正常.但是它很慢.除了我自己的静态文件(只有几个)和django admin之外,我还有一些包含许多静态文件的第三方软件包(grappelli,django-redactor).每次运行它时,collectstatic可能需要15分钟,具体取决于我的互联网连接.对于我正在与我的临时存储桶同步并且事情不太正确的情况,我必须调整一些内容并重新同步,这是一个重要的时间杀手.是否有任何好的,快速的,可编写脚本的替代方法,用于将静态文件同步到s3?

django amazon-s3 boto django-staticfiles

12
推荐指数
2
解决办法
4262
查看次数

Django - 我可以改变特定子模型的抽象基础模型中定义的字段的构造吗?

我正在为我的所有模型添加一个slug用于序列化,所以我定义了一个使用django_autoslug中的AutoSlugField的抽象基类.

class SluggerModel(models.Model):
    slug = AutoSlugField(unique=True, db_index=False) 

    class Meta:
        abstract=True
Run Code Online (Sandbox Code Playgroud)

我还定义了一个自定义管理器和一个natural_key方法,此时我有大约20个子类,因此除了定义字段的单行之外,还有一些使得使用抽象基本模型的东西值得.

但是,我希望能够切换一些默认参数来初始化AutoSlugField某些子模型,同时仍然可以使用抽象基类.例如,我希望其中一些人使用该populate_from选项,指定其特定模型中的字段,而其他人则使用db_index=True默认值(False).

我开始尝试使用自定义Metaclass,使用在每个子模型的内部Meta类中定义的自定义选项,但这成为了老鼠的巢.我愿意接受有关该方法的指导,或任何其他建议.

django factory django-models

11
推荐指数
1
解决办法
1030
查看次数

如何在Django邮件中指定名称?

我正在使用django的core.mail包与django-registration一起使用新的用户注册工作流程.我有一个电子邮件帐户,"不回复@(mycompany).com"通过我公司的谷歌邮件服务,我想用来发送这些电子邮件.在谷歌邮件帐户设置中,我将电子邮件帐户的名称设置为"(MyCompany)支持",这样,如果我直接从谷歌邮件发送邮件,则电子邮件来自帐户,来自"(MyCompany)支持".但是,当我使用django的电子邮件设置发送邮件时,电子邮件显示在客户端的电子邮箱中,因为它来自"无回复",这很丑陋,可能对新客户端有点不利.有没有办法在使用django的内置邮件程序发送时为电子邮件地址指定"名称",以便在收到电子邮件时看到"名称"?

以下是我在settings.py中的当前设置:

EMAIL_HOST='smtp.gmail.com'
EMAIL_PORT=587
EMAIL_HOST_USER='no-reply@mycompany.com'
EMAIL_HOST_PASSWORD='**********'
EMAIL_USE_TLS = True
Run Code Online (Sandbox Code Playgroud)

django django-registration

9
推荐指数
2
解决办法
4749
查看次数

如何自动将target ="_ blank"添加到外部链接?

我正在构建一个定制的,行业特定的cms(使用django).在后端,网站管理员可以指定内部链接,例如"/ page1"或外部链接,用于整个网站中的各种导航元素(<a>在渲染时都使用).问题是我希望在当前选项卡中打开内部链接,但外部链接应该用于target="_blank"打开新选项卡或窗口.

我如何处理html来实现这一目标?

我更喜欢服务器端解决方案,但我不知道在django中预处理渲染模板的任何干净方法.因此,我认为最简单的方法可能是javascript/jquery解决方案:在每个页面加载时运行的脚本,它将target ="_ blank"属性添加到所有外部链接但不添加内部链接.但我也不确定如何做到这一点.

javascript django jquery

9
推荐指数
2
解决办法
6398
查看次数

django管理员更改列表中的自定义list_editable字段,它不直接对应于模型字段

假设我的模型看起来像这样(这是一个简化的例子):

class Person(Model):
  first_name = CharField(...)
  last_name = CharField(...)

  def name():
    return first_name + ' ' + last_name
Run Code Online (Sandbox Code Playgroud)

在管理更改列表中将名称显示为单个列非常简单.但是,我需要一个可编辑的"名称"字段,该字段可从列表页面进行编辑,然后我可以解析该字段以提取和设置模型字段值.解析不是问题.我只是想知道如何在列表页面上创建一个不直接与模型字段对应的可编辑表单字段.

python django django-admin

9
推荐指数
1
解决办法
5594
查看次数

jquery:如果第一个选择器返回空,有没有一种简洁的方法来有条件地使用第二个选择器?

在python中,我可以执行以下操作,如果第一个列表为空,则有条件地使用第二个列表:

>>> x = [ ] or [1, 2]
>>> x
[1, 2]
Run Code Online (Sandbox Code Playgroud)

但是,在javascript中,

>>> x = [ ] || [1, 2];
[ ]
Run Code Online (Sandbox Code Playgroud)

所以,如果"或技巧"不在桌面上,我想知道什么是最简洁的方式来做类似下面的if-javascript-were-python-this-would-work伪代码:

$elems = $('first-selector') || $('second-selector')
Run Code Online (Sandbox Code Playgroud)

javascript jquery

8
推荐指数
1
解决办法
126
查看次数

如何重置南迁移以捕获我的django模型的当前状态

我有一个应用程序,目前有35个南迁移.在设置新部署时我们需要花费一些时间(我们经常创建新的部署),并且应用程序在不断发展 - 添加更多迁移.此外,迁移包括一些可能复杂的数据迁移和一些破坏SQLite3的自定义迁移(现在不是一个很大的问题,因为一切都在Postgres上,但很高兴能够建立一个快速的测试环境),通常只是更多可能出错的事情.

我们所有的部署和开发人员都是最新的,我想清除所有应用程序的迁移并创建一个捕获应用程序当前状态的初始迁移(0001),然后继续进行新的迁移那里.几年前我用不同的应用程序做了这个,并且它运行得很好,但我已经忘记了这个过程是什么,并且忘记了解释如何操作的博客文章.任何人都可以为我打破这个过程吗?

django django-south

8
推荐指数
1
解决办法
2932
查看次数

'LazySettings'类型的django参数不可迭代; 然后如何检查设置是否存在?

from django.conf import settings

def my_view(self, request, *args, **kwargs):
    if 'LOCAL' in settings and settings.LOCAL:
        # do something
Run Code Online (Sandbox Code Playgroud)

类型为"LazySettings"的...的参数的TypeError不可迭代

那么如何检查设置是否存在?否则我会收到属性错误.

python django django-settings

7
推荐指数
1
解决办法
2236
查看次数

使用django模板标签拆分列表

my_list 在上下文中有一个列表,我想将它呈现为两个"列",第一列中的第一个(n + 1)/ 2项和第二列中的最后一个n/2项.有没有一种直接的方法来使用django模板标签/过滤器,或者我需要在我的视图中预先将列表拆分为两个?

例如,

<div class="split-50-left">
  <ul> 
    {% for item in [first half of my_list] %}
      <li>{{item}}</li>
    {% endfor %}
  </ul>
</div>
<div class="split-50-right">
  <ul> 
    {% for item in [second half of my_list] %}
      <li>{{item}}</li>
    {% endfor %}
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

django django-templates

7
推荐指数
1
解决办法
7453
查看次数