我有一个与Book有外键关系的Person模型.本书有很多领域,但我最关心的是"作者"(标准的CharField).
话虽如此,在我的PersonAdmin模型中,我想使用"list_display"显示"book.author".我已经尝试了所有这些明显的方法(见下文),但似乎没有任何效果.有什么建议?
class PersonAdmin(admin.ModelAdmin):
list_display = ['book.author',]
Run Code Online (Sandbox Code Playgroud) 对于Django 1.1.
我在models.py中有这个:
class User(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
更新行时,我得到:
[Sun Nov 15 02:18:12 2009] [error] /home/ptarjan/projects/twitter-meme/django/db/backends/mysql/base.py:84: Warning: Column 'created' cannot be null
[Sun Nov 15 02:18:12 2009] [error] return self.cursor.execute(query, args)
Run Code Online (Sandbox Code Playgroud)
我的数据库的相关部分是:
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
Run Code Online (Sandbox Code Playgroud)
这引起关注吗?
附带问题:在我的管理工具中,这两个字段没有显示出来.这是预期的吗?
如何更改django管理标头中的"Django管理"文本?
它似乎没有在"自定义管理员"文档中介绍.
当您有多对多关系(related_name而不是through)并且您尝试使用管理界面时,您需要输入其中一个关系,即使您不必存在创建第一个条目.
我正在创建一个作为活动组织者的应用程序.想象一下,我们拥有Event和Group模型,与多对多关系绑定.
Django related_name创建了另一个表,其中包含其他两个表的索引.
但我看不出为什么这个额外的表已经被填充.
如果我通过phpMyAdmin使用数据库,我可以创建一个Group没有注册的Event,因为两者之间的连接只是通过一个单独的表,并且在给定级别没有数据库值强制执行.
如何使管理界面实现呢?
如何在Django中使多对多字段可选?
在Django 1.0之前有一个简单的方法来获取一个对象的管理URL,我写了一个小的过滤器,我会像这样使用: <a href="{{ object|admin_url }}" .... > ... </a>
基本上我使用的是url reverse函数,视图名称为 'django.contrib.admin.views.main.change_stage'
reverse( 'django.contrib.admin.views.main.change_stage', args=[app_label, model_name, object_id] )
Run Code Online (Sandbox Code Playgroud)
得到网址.
正如您可能已经猜到的那样,我正在尝试更新到最新版本的Django,这是我遇到的障碍之一,获取管理URL的方法不再适用.
我怎么能在django 1.0中这样做?(或者1.1,因为我正在尝试更新到svn中的最新版本).
如何为同一模型创建多个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中,但我不确定它究竟是如何工作的.
更新:我找到了一种做我想做的事情(见下文),但我仍然希望听到其他方法.
我有一个拥有大量模型和表格的django网站.我有许多自定义表单和表单集以及内联表单集和自定义验证以及自定义查询集.因此,添加模型操作取决于需要其他内容的表单,以及django管理员中的"添加模型",通过自定义查询集中的500.
无论如何要禁用某些型号的"添加$ MODEL"功能?
我想/admin/appname/modelname/add/提供404(或合适的"消失"错误消息),我不希望"添加$ MODELNAME"按钮在/admin/appname/modelname视图中.
Django admin提供了一种禁用管理操作的方法(http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions)但是此模型的唯一操作是"delete_selected".即管理操作仅对现有模型起作用.是否有一些django式的方式来做到这一点?
如何在新的dev django版本的管理站点上将某些型号名称从"Categorys"更改为"Categories"?在旧版本中(没有管理站点和管理模型)你可以这样做; http://www.the-dig.com/blog/post/customize-plural-name-django-admin/
但是 - 现在在我的基于modeladmin的类中设置verbose_name_plural什么都不做.有人问同样的问题吗?
当定义了该list_display数组ModelAdmin类,如果一个BooleanField或NullBooleanField给予用户界面将使用的,而不是在列真/假的文字好看的图标.但是,如果给出了返回布尔值的方法,则只会打印出True/False.
有没有办法让它使用漂亮的图标作为布尔方法?
如何覆盖管理模板(例如admin/index.html),同时扩展它(请参阅https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing -an-admin-template)?
首先 - 我知道之前已经提出并回答了这个问题(参见Django:覆盖和扩展应用程序模板),但正如答案所说,如果您使用的是app_directories模板加载器(大部分是时间).
我目前的解决方法是从它们进行复制和扩展,而不是直接从管理模板扩展.这非常有效,但是当管理模板发生变化时,它会让人感到困惑并增加额外的工作量.
它可以考虑模板的一些自定义扩展标记,但如果已经存在解决方案,我不想重新发明轮子.
旁注:有人知道Django本身是否会解决这个问题?
django ×10
django-admin ×10
python ×6
datetime ×1
django-urls ×1
many-to-many ×1
modeladmin ×1