我正在为正在处理的应用程序定制Django-admin.到目前为止定制工作文件,添加了一些视图.但我想知道如何更改change_list显示中的记录链接以显示信息页而不是更改表单?!
在这篇博文中:http://www.theotherblog.com/Articles/2009/06/02/ extend-the-django-admin-interface/Tom说:
"您可以通过定义函数然后添加my_func.allow_tags = True来在列表视图中添加图像或链接"
我不太明白!!
现在我有配置文件功能,当我点击记录列表中的成员我可以显示它(或添加另一个名为 - 配置文件 - 的按钮),还有如何为每个成员添加链接(编辑:重定向我编辑)该成员的表格).
我怎么能做到这一点?!
我知道如何使用widget =在常规django表单中使用WMD和其他此类javascript编辑器.但是,如何在Django管理员的文本字段中使用WMD?最重要的是,如何将它用于admin中contrib.flatpages的内容字段?
另外,我想我可能想使用WMD的StackOverflow分支,所以如果需要的话,我想要任何特殊说明.
我知道如何在模板中使用降价滤镜,因此该部分是可以的.我只需要让编辑器显示并在管理界面中工作.
我正在开始研究我需要什么才能为Rails应用程序构建用户级插件系统(如Wordpress插件),所以我很欣赏一些通用指针/建议.用户级插件我指的是一个用户可以解压缩到一个文件夹并将其显示在管理界面上的包,允许他们添加一些额外的配置然后激活它.
这样做的最佳方法是什么?还有其他开源项目吗?Rails本身已经为可以利用的程序员级插件提供了什么?任何可以帮助我的Rails插件?
插件必须能够:
还有什么我想念的吗?
此外,有没有办法限制插件可以访问哪些表/操作有关迁移和模型,还限制他们访问路由(可能让它们包括但不删除路由)?
PS:我会尽量保持这个更新,编译我弄清楚的东西和相关答案,以便为其他人提供一种指导.
我想为Django管理界面和应用程序本身提供不同的会话,以便能够以管理员身份登录管理界面并作为应用程序的标准用户.
任何想法如何实现?
PS当然,我可以使用2种不同的网络浏览器实例,还有其他任何方式吗?
我想在我的django管理员索引中显示额外的侧边栏.我创造了templates/admin/index.html它并且它出现了.现在我需要一些模型数据.为此,我在文件中创建了索引函数admin/views.py
def index(request):
var = 'var'
return render_to_response('admin/index.html', {'var': var})
Run Code Online (Sandbox Code Playgroud)
没有这个功能我有错误ViewDoesNotExist.
但是,模板不会对此示例变量'var'做出反应.此外,我的应用程序不会显示在索引中.我只有auth应用程序.
我认为我正在覆盖索引函数表单管理视图.如何正确覆盖此功能?
我相信我的问题的答案很简单,但我无法在任何地方找到它.这是我的困境.我有两个模型:Member和MemberDetail,它们是oneToOne关系,如下所示:
class Member(models.Model):
ID = models.AutoField(primary_key=True)
FIRST_NAME = models.CharField('First name', max_length=50)
LAST_NAME = models.CharField('Last name', max_length=50)
def __unicode__(self):
return u'%s %s' % (self.FIRST_NAME, self.LAST_NAME)
class MemberDetail(models.Model):
member = models.OneToOneField(Member, primary_key=True)
DATE_OF_BIRTH = models.DateField('Date of birth')
EMAIL = models.EmailField('E-mail')
PHONE = models.CharField('Phone', max_length=15)
Run Code Online (Sandbox Code Playgroud)
现在在我的admin.py中,我想要显示包含所有数据的成员表,如下所示:
class MemberDetailInline(admin.TabularInline):
model = MemberDetail
class MemberAdmin(admin.ModelAdmin):
list_display = ("FIRST_NAME", "LAST_NAME", "date_of_birth", "email", "phone")
inlines = [
MemberDetailInline,
]
admin.site.register(Member, MemberAdmin)
Run Code Online (Sandbox Code Playgroud)
我根本不知道怎么写list_display的"date_of_birth","email"和"phone"部分.我能做的最接近的事情是在内联后添加:
def date_of_birth(self, MemberDetail):
return MemberDetail.DATE_OF_BIRTH
def date_of_birth(self, MemberDetail):
return MemberDetail.EMAIL
def date_of_birth(self, MemberDetail):
return MemberDetail.PHONE …Run Code Online (Sandbox Code Playgroud) 我正在尝试list_editable使我的所有字段都可以在同一页面上编辑。但除非我也有一些东西,否则我list_display_links会出错。我没有任何未使用的字段放在那里的问题。我可能在某处误解了一个概念。
我所做的就是在模型中创建一个“虚拟”字段:dummy = None。这不仅笨拙而且可能是错误的 - 而且还会导致虚拟字段出现在我的管理员中。
我究竟做错了什么?我尝试阅读文档,但找不到解决问题的方法。我想以“正确的方式”解决这个问题,无论那是什么。
这是我的代码:
模型.py
...
class Slider(models.Model):
slider_title = models.CharField(max_length=20)
slider_text = models.TextField(max_length=200)
slider_order = models.PositiveSmallIntegerField(
default=1, blank=True, null=True, choices=[(1, 'first'),
(2, 'middle'), (3, 'last')])
dummy = None
def clean(self):
validate_only_three_instances(self)
def __str__(self):
return self.slider_title
...
Run Code Online (Sandbox Code Playgroud)
管理文件
...
class SliderAdmin(admin.ModelAdmin):
# remove "add" button
def has_add_permission(self, request):
return False
fieldsets = [
(None, {'fields': ['slider_title']}),
(None, {'fields': ['slider_text']}),
(None, {'fields': ['slider_order']}),
]
list_display = (
'slider_title', 'slider_text', 'slider_order', 'dummy',) …Run Code Online (Sandbox Code Playgroud) 在Python 3.4.1上使用带有模型的Django 1.8:
class Product(models.Model):
name = models.CharField(max_length=255)
# some more fields here
def __str__(self):
return self.name
class PricedProduct(models.Model):
product = models.ForeignKey(Product, related_name='prices')
# some more fields here
def __str__(self):
return str(self.product)
class Coming(models.Model):
# some unimportant fields here
class ComingProducts(models.Model):
coming = models.ForeignKey(Coming)
priced_product = models.ForeignKey(PricedProduct)
# more unimportant fields
Run Code Online (Sandbox Code Playgroud)
和以下admin.py:
class ComingProductsInline(ForeignKeyCacheMixin, admin.TabularInline):
model = ComingProducts
class ComingAdmin(admin.ModelAdmin):
inlines = [ComingProductsInline]
Run Code Online (Sandbox Code Playgroud)
当然,我遇到了对数据库进行多次查询的问题:我对列表中的每个项目进行查询,并对每一行进行查询.所以,有100个项目,我得到100 ^ 2个查询.我已经用Django表单中的ModelChoiceField或ModelMultipleChoiceField的缓存查询集选项解决了每行查询的问题 但是我仍然遇到str方法的问题.我尝试过以下方法:
1)将prefetch_related添加到ComingAdmin:
def get_queryset(self, request):
return super(ComingAdmin, self).get_queryset(request). …Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来自动在CentOs 7发行版上安装绑定服务器.
我坚持systemctl status,因为它不会产生错误代码(它是正确的,因为状态不是错误)我可以使用.
我想要的是检查服务是否已启动(活动).这样做的最佳和最有效的方法是什么?
在火力地堡公司的FireStore,我想只允许(自定义设定),管理员写/更新/删除资源,为此,我已经得到了这些安全规则:
service cloud.firestore {
match /databases/{database}/documents {
match /resources {
allow read;
allow write, update, delete: if get(/users/$(request.auth.uid).isAdmin);
}
match /resources/{resource} {
allow read;
allow write, update, delete: if get(/users/$(request.auth.uid).isAdmin);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用在users集合中标记为admin的用户登录:

NfwIQAjfNdS85yDvd5yPVDyMTUj2是从身份验证窗格获取的UID:

但是,出于某种原因(更新:确定原因;请参阅答案),在确定我已经使用admin用户登录后,在写入资源集合时,我收到了PERMISSION_DENIED错误.
也许可以从Firestore查看请求日志?然后,我可以看看request.auth.uid与我的收藏和规则相匹配的内容.
admin ×10
django ×7
python ×3
django-admin ×2
access ×1
bash ×1
django-views ×1
firebase ×1
foreign-keys ×1
linux ×1
models ×1
one-to-one ×1
overwrite ×1
plugins ×1
rules ×1
scripting ×1
session ×1
systemd ×1
wmd ×1