小编Jor*_*zov的帖子

Django admin中相同模型的多个ModelAdmins /视图

如何为同一模型创建多个ModelAdmin,每个模型以不同方式自定义并链接到不同的URL?

假设我有一个名为Posts的Django模型.默认情况下,此模型的管理视图将列出所有Post对象.

我知道我可以通过设置list_display等变量或覆盖queryset我的ModelAdmin中的方法来以各种方式自定义页面上显示的对象列表,如下所示:

class MyPostAdmin(admin.ModelAdmin):
    list_display = ('title', 'pub_date')

    def queryset(self, request):
        request_user = request.user
        return Post.objects.filter(author=request_user)

admin.site.register(MyPostAdmin, Post)
Run Code Online (Sandbox Code Playgroud)

默认情况下,可以通过URL访问它/admin/myapp/post.但是我想拥有相同模型的多个视图/ ModelAdmins.例如/admin/myapp/post,列出所有帖子对象,并/admin/myapp/myposts列出属于该用户的/admin/myapp/draftpost所有帖子,并列出所有尚未发布的帖子.(这些只是示例,我的实际用例更复杂)

您不能为同一模型注册多个ModelAdmin(这会导致AlreadyRegistered异常).理想情况下,我希望在将所有内容放入单个ModelAdmin类并编写自己的"urls"函数的情况下实现此目的,以根据URL返回不同的查询集.

我已经看过Django源了,我看到这样的函数ModelAdmin.changelist_view可能以某种方式包含在我的urls.py中,但我不确定它究竟是如何工作的.

更新:我找到了一种做我想做的事情(见下文),但我仍然希望听到其他方法.

python django django-admin

145
推荐指数
1
解决办法
3万
查看次数

如何在Django中维护同一语言的不同国家/地区版本?

我想有几个不同的版本在Django相同的语言,定制不同的国家(例如locale/en,locale/en_CA,locale/en_US等).如果没有特定国家/地区的语言,我希望使用默认语言版本(locale/en)).

然后在设置文件为每个站点我指定LANGUAGE_CODELANGUAGES.

出于某种原因,即使我指定以下设置,locale/en_US仍然使用翻译:

LANGUAGE_CODE = 'en'
LANGUAGES = (
    ('en', ugettext('English')),
)
Run Code Online (Sandbox Code Playgroud)

虽然我明确指出语言代码应该是en(不是en-us).

我错过了什么吗?已经尝试在多个地方找到答案,包括Django文档.

python django internationalization django-i18n

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

如何在OpenERP中创建字段仅适用于特定的工作流状态?

在我的OpenERP安装中,我有以下字段,之前不需要,但我将所需的参数更改为True.

'fiscal_position': fields.many2one(
    'account.fiscal.position',
    'Fiscal Position',
    required=True,
    readonly=True,
    states={'draft':[('readonly',False)]}
    ),
Run Code Online (Sandbox Code Playgroud)

在调试日志中,我看到ORM尝试为数据库中的该字段设置非空约束.

2013-01-04 15:28:56 EET STATEMENT:  ALTER TABLE "account_invoice"
    ALTER COLUMN "fiscal_position" SET NOT NULL
Run Code Online (Sandbox Code Playgroud)

我怎么能防止这种情况?我的想法是获得所需的True标志,仅用于新记录并且没有NOT NULL约束.在其他情况下发生PostgreSQL完整性错误:

IntegrityError: null value in column "fiscal_position" violates
    not-null constraint
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能在表单视图中有一个必填字段,而不使ORM触及数据库方案约束?或者如何根据对象的状态动态更改所需的字段?

python postgresql openerp

11
推荐指数
2
解决办法
8036
查看次数

什么是在封闭范围内的赋值错误之前避免引用的Pythonic方法?

我说的是一般情况.这是一个例子:

c = 1
def a():
    def b():
        print(c)
    b()
    c = 2

a()
Run Code Online (Sandbox Code Playgroud)

此代码将返回以下错误: NameError: free variable 'c' referenced before assignment in enclosing scope.虽然逻辑假设是输出应该是1.什么是Pythonic解决这个问题的方法?使用globalnonlocal语句(我不喜欢)?也许只是避免这种情况,多个范围共享具有相同名称的变量?

python python-2.x python-3.x

4
推荐指数
1
解决办法
2014
查看次数

跨数据库 SQLAlchemy 应用程序的通用 TEXT/CLOB 数据类型

我正在开发 Python Web 应用程序,该应用程序在开发环境中使用 MySQL 作为数据库后端,在生产环境中使用 Oracle 11g。是否有统一 SQLAlchemy 文本字段的特定方法,以便它们在 MySQL 和 Oracle 数据库上工作?对于我使用的模型中的 Oracle 后端sqlalchemy.CLOB和 MySQL sqlalchemy.TEXT

python database sqlalchemy

3
推荐指数
1
解决办法
1966
查看次数

如何在Django blocktrans中使空格和缩进微不足道?

blocktrans在某些Django模板中镜像以下内容:

{% blocktrans %}
    Some Text
{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)

在模板中进行了一些更改之后,您可能希望缩进该块:

<div>
    {% blocktrans %}
        Some Text
    {% endblocktrans %}
</div>
Run Code Online (Sandbox Code Playgroud)

这将更改翻译文件中的消息,并将其标记为模糊。从技术上讲,它是相同的消息(只是缩进不同)。

这些消息“模糊不清”的整个过程是乏味且容易出错的。

到目前为止我尝试过的是:

  • 使用trans尽可能多的-并不总是工作
  • 保留blocktrans语句的初始缩进-难以维护
  • 试图在文档和其他资源中找到更多信息

有没有办法使缩进blocktrans微不足道?

python django django-templates django-i18n

2
推荐指数
1
解决办法
641
查看次数

从Amazon MySQL RDS本地导入转储时出现MySQL语法错误?

当我从Amazon RDS创建数据库转储然后尝试在本地导入它时,结果是ERROR 1064 (42000) at line 54.

在第54行,有以下声明: CREATE TABLE account_emailconfirmation (

用于转储的命令是: mysqldump -u user -h host.rds.amazonaws.com -p --default-character-set=utf8 --result-file=sync.sql database_name

用于导入的命令是: mysql --user=root -p mpl -vv < sync.sql

这是输出(详细程度增加).

--------------
CREATE TABLE `account_emailconfirmation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created` datetime(6) NOT NULL,
  `sent` datetime(6) DEFAULT NULL,
  `key` varchar(64) NOT NULL,
  `email_address_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `key` (`key`),
  KEY `acc_email_address_id_5bcf9f503c32d4d8_fk_account_emailaddress_id` (`email_address_id`),
  CONSTRAINT `acc_email_address_id_5bcf9f503c32d4d8_fk_account_emailaddress_id` FOREIGN KEY (`email_address_id`) REFERENCES `account_emailaddress` (`id`)
) ENGINE=InnoDB DEFAULT …
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump rds amazon-web-services

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