每当我用对象B的外键编辑对象A时,对象B的选项旁边就会出现加号选项"添加另一个".如何删除该选项?
我配置了一个没有添加对象B权限的用户.加号仍然可用,但是当我点击它时,它会显示"权限被拒绝".它很丑.
我正在使用Django 1.0.2
我想这里会讨论类似的问题,但我找不到它.
假设我有一名编辑和一名主管.我希望编辑能够添加新内容(例如新闻帖子),但在发布之前必须由主管确认.
当编辑列出的所有项目,我想设置的模型某些字段(如一个"ACK"字段)为只读(这样他就可以知道已经ack'ed,什么是仍在等待批准),但管理员应该能够改变一切(list_editable将是完美的)
这个问题的可能解决方案是什么?
我在我的一个管理模型中有一些内联,它们具有默认值,当使用"添加另一个..."添加新实例时可能不需要更改.不幸的是,除非某些值发生变化,否则django不会将这些内联识别为新对象.这会强制我添加内联,更改任意值,保存,更改值并再次保存以达到所需效果.
到目前为止我唯一提出的解决方案是添加一个隐藏的"已更改"字段,它将在添加新内联时通过java脚本填充.因为这感觉非常hackish,我希望有一个更优雅的解决方案.
任何想法将不胜感激.
谢谢,丹尼尔.
哪个是实现我自己的最佳方式django.contrib.admin.sites.AdminSite?
其实我得到一个问题登记INSTALLED_APPS在django.contrib.admin.autodiscover.如果我使用自定义AdminSite类urls.py,则管理页面上不会显示任何应用程序.
我用一个小黑客修复了这个问题.我写了这堂课:
from django.contrib.admin.sites import site as default_site
class AdminSiteRegistryFix( object ):
'''
This fix links the '_registry' property to the orginal AdminSites
'_registry' property. This is necessary, because of the character of
the admins 'autodiscover' function. Otherwise the admin site will say,
that you havn't permission to edit anything.
'''
def _registry_getter(self):
return default_site._registry
def _registry_setter(self,value):
default_site._registry = value
_registry = property(_registry_getter, _registry_setter)
Run Code Online (Sandbox Code Playgroud)
并实现我的自定义AdminSite,如下所示:
from wltrweb.hacks.django.admin import AdminSiteRegistryFix
from django.contrib.admin …Run Code Online (Sandbox Code Playgroud) 我的应用有用户创建页面.在管理员的页面屏幕中,我想列出创建该页面的用户,并且在该列表中,我希望用户名具有一个链接到admin(而不是Page)中的用户页面.
class PageAdmin(admin.ModelAdmin):
list_display = ('name', 'user', )
list_display_links = ('name','user',)
admin.site.register(Page, PageAdmin)
Run Code Online (Sandbox Code Playgroud)
我希望通过使它成为list_display中的链接,它将默认链接到实际的用户对象,但它仍然转到Page.
我确定我在这里错过了一些简单的东西.
为了解决django-admin中缺少嵌套内联的问题,我将特殊情况放入两个模板中,以便在管理员更改页面和两个模型的内联管理员之间创建链接.
我的问题是:如何创建一个链接,从管理员更改页面或内联管理员的一个模型到管理员更改页面或相关模型的内联管理员干净利落,模板中没有讨厌的黑客?
我想要一个通用的解决方案,我可以应用于任何模型的管理员更改页面或内联管理员.
我有一个模型,post(不是它的真实姓名)既是blog管理页面上的内联,也有自己的管理页面.它不能仅仅是内联的原因是它具有带有外键的模型,只有在用它编辑时才有意义,并且只有在编辑时才有意义blog.
对于post管理页面,我更改了"fieldset.html"的一部分:
{% if field.is_readonly %}
<p>{{ field.contents }}</p>
{% else %}
{{ field.field }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
至
{% if field.is_readonly %}
<p>{{ field.contents }}</p>
{% else %}
{% ifequal field.field.name "blog" %}
<p>{{ field.field.form.instance.blog_link|safe }}</p>
{% else %}
{{ field.field }}
{% endifequal %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
创建指向blog管理页面的链接,其中blog_link是模型上的方法:
def blog_link(self):
return '<a href="%s">%s</a>' % (reverse("admin:myblog_blog_change",
args=(self.blog.id,)), escape(self.blog))
Run Code Online (Sandbox Code Playgroud)
我找不到id了的blog …
我正在尝试在保存新模型实例时向用户发送电子邮件,并且我希望该电子邮件包含指向该模型实例的管理页面的链接.有没有办法获得正确的URL?我认为Django必须将信息存储在某个地方.
Django 1.5,python 2.6
该模型在特定条件下自动创建用户:
User.objects.get_or_create(username=new_user_name, is_staff=True)
u = User.objects.get(username=new_user_name)
u.set_password('temporary')
Run Code Online (Sandbox Code Playgroud)
除了设置用户名,密码和is_staff状态之外,我还想设置用户的权限 - 类似于:
u.user_permissions('Can view poll')
Run Code Online (Sandbox Code Playgroud)
要么
u.set_permissions('Can change poll')
Run Code Online (Sandbox Code Playgroud)
这可能吗?谢谢!
我需要跟踪/记录Django管理员的活动.
我知道管理员在某处存储了消息,但我不知道如何访问它们以便将它们用作简单的日志.
我正在尝试跟踪以下内容:
用户执行操作
已采取行动
行动日期
多谢你们.