在Django 1.1 admin中,当我去添加或更改对象时,我的对象显示为:
Select host to change
* Add host
Host object
Host object
Host object
Host object
Host object
Run Code Online (Sandbox Code Playgroud)
这适用于我网站中的所有模型,而不仅仅是主机.
我希望Django显示主键,而不是为每个对象显示相同的名称.
Select host to change
* Add host
machine1
machine2
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
from django.db import models
# Create your models here.
class Host(models.Model):
host = models.CharField(max_length=100,primary_key=True)
class Admin:
list_display = ('host')
class Test(models.Model):
testname = models.CharField(max_length=100,primary_key=True)
class Admin:
list_display = ('testname')
class Result(models.Model):
host = models.ForeignKey(Host)
TESTRESULT_CHOICES = (
('P', 'Pass'),
('F', 'Fail'),
)
testresult = models.CharField(max_length=1, choices=TESTRESULT_CHOICES)
reason = …Run Code Online (Sandbox Code Playgroud) 我有一个Entry包含简单属性的model():
@property
def image(self):
return str(self.id)+"_"+self.round.season.name+"_"+self.round.theme+"_"+self.person.name
Run Code Online (Sandbox Code Playgroud)
我用它来构建磁盘上特定图像文件的名称.所以我知道会有一个图像/path/to/images/(model.image()).jpg
我可以在管理页面上的TabularInline布局中显示原始图像属性本身,方法是将其添加到readonly_fields集合中,但是如何获取一个包含模型属性的自定义html的列?
例如
<img src="/images/{{model.image}}.jpg" />
Run Code Online (Sandbox Code Playgroud) 我在我的Django管理员基础模板中包含了几个第三方jQuery插件,假设"$"可用.
对于我自己的代码,我一直很乐意这样做
(function($) {
my_code = 'here';
})(django.jQuery);
Run Code Online (Sandbox Code Playgroud)
但是如何为外部文件中的其他人代码提供"$"?
<script src="{{ STATIC_URL }}js/jquery.json-2.2.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
抱怨"$"未定义.我试过放
<script type="text/javascript">var $ = django.jQuery;</script>
Run Code Online (Sandbox Code Playgroud)
在那个外部引用之前,但无济于事(顺便说一下,为什么会这样?我理解加载同时发生,但是执行?我可以在定义之后立即使用"$".).
我对Django管理员提供的jQuery版本感到满意,并且真的不想加载另一个版本.我也不想编辑其他人的插件,以便从上面的"$"重新定义开始.编辑:我也不想像我自己的代码一样包装它,我只是不想触摸这些文件.
我是否真的不得不将$ .getScript() - http://api.jquery.com/jQuery.getScript - 放入我的匿名函数来加载这些文件?
编辑:在实际查看外部文件jquery.json-2.2.min.js之后,我看到它已经被包装到一个函数中,假定"jQuery"可用,而不是"$".插入后
var jQuery = django.jQuery;
在外部参考之前,它工作正常.但这真的应该怎么做呢?
我一直收到这个错误:'str'对象没有属性'resolve'
当试图访问django管理站点时,我无法弄清楚原因.我的项目中的应用程序有自己的admin.py文件.这会导致它吗?这是我的urls.py:
from django.conf.urls.defaults import *
import settings
from django.contrib.auth.views import login, logout
from views import index, simple, complex
from django.views.generic.simple import direct_to_template
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^django_jchat/', include('django_jchat.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
Run Code Online (Sandbox Code Playgroud)
...
继续追溯:
'str' object has …Run Code Online (Sandbox Code Playgroud) 我正在一个拥有MySQL innodb后端的django网站上工作.我们在几个表中有数十万条记录,这导致了管理员的一些站点稳定性/性能问题.具体来说,django喜欢在创建分页器时进行count(*)查询,这会导致很多问题.
使用Django 1.3.x,他们开始允许提供自定义分页类.所以,我有兴趣找到一种方法来适当加快或消除这些查询.到目前为止,我一直在查看这两个页面:http ://code.google.com/p/django-pagination/source/browse/trunk/pagination/paginator.py https://gist.github.com/ 1094682 并没有真正发现它们是我正在寻找的.任何建议,帮助等.非常感谢.
在我的应用程序(设备管理员)中,当用户尝试停用应用程序的管理功能时,我需要擦除整个设备.当用户转到设置/安全/设备管理员并停用管理员应用程序时,首先会出现一个对话框"是否要取消激活".如果用户说"是",则会显示另一个小对话框,其中文本由应用程序的AdminReceiver在onDisableRequested()中提供.如果用户然后说"是",我想擦除整个设备.怎么做到这一点?
我尝试了一切,长期寻找答案,找不到真正的解决方案.
我尝试了什么:
官方文档没有明确说明,但似乎在调用onDisable()时管理员已被禁用.因此,我们必须在此之前擦除设备.
AdminReceiver有一个函数onDisableRequested(),它返回CharSequence.我试图在该功能中添加另一个警报框.这会崩溃,因为无法从非活动上下文调用警报框,这似乎是我们在onDisableRequested()时所拥有的.
AdminReceiver有一个onReceive()函数,可以在任何事件上调用它.在这个函数中,我们不再处于活动上下文中,也不能呈现我们自己的对话框.
我尝试从onReceive()创建另一个活动.这有效; 在onReceive()期间,当我们获得ACTION_DISABLE_ADMIN_REQUESTED时,管理员仍处于活动状态,我们可以擦除设备.但是,系统仍会显示自己的对话框,询问用户是否停用管理员.如果用户对我们的对话框拒绝但对系统对话框拒绝,则管理员将被停用,我们将无法擦除设备.
我在DeviceAdminReceiver的子类中尝试了以下内容:
@Override
public void onReceive(Context context, Intent intent) {
// detect whether disabling is requested?
if (intent.getAction().equals(ACTION_DEVICE_ADMIN_DISABLE_REQUESTED)) {
confirmWipeDevice(context);
} else {
super.onReceive(context, intent);
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,如果操作是禁用管理员,我不会调用super.onReceive().函数confirmWipeDevice()使用对话框显示不同的活动.这不显示用于确认禁用我的管理员应用程序的系统对话框.但是,这并不妨碍应用程序实际被禁用!
似乎Android系统执行以下操作:
将ACTION_DEVICE_ADMIN_DISABLE_REQUESTED发送到AdminReceiver
无论管理员应用程序想要执行什么操作,都要禁用管理员
如果用户取消禁用,则罚款; 如果没有,该应用程序被禁用.应用无法拒绝被禁用,也无法在禁用时执行设备擦除.
到目前为止,唯一的解决方案是在用户想要禁用管理应用时立即擦除而不进行确认.换句话说,我可以在onDisableRequested()中立即调用getManager().wipeData().那时,管理员仍然活跃,这是有效的.
它是否正确?当用户选择禁用管理应用程序时如何擦除设备?
我想在默认的Django管理员中添加一个上传按钮,如下所示:

为此,我重写了admin/index.html模板以添加按钮,但是如何覆盖管理视图以便处理它?
我想要实现的是在上传文件后显示成功消息或错误消息.
我有一个应用程序需要来自Service2的数据,它将永远返回给定请求的相同答案,除非它的后备数据库被更新.数据库很少更新,让我们说每年两次.
我想设计一个解决方案,以便应用程序缓存来自Service2的答案,但是从外部提供一个功能,以便使Application的缓存无效.我想过从应用程序中暴露一个RESTful Web服务,但我对如何正确设计它感到困惑.
/application/cache/invalidate是一个非RESTful URL - 我正在考虑/application/cache/使用HTTP POST调用.但是,在我看来,对于正确的RESTful设计,当POST用于更新资源时,要更新的内容应该包含在请求的主体中.
设计"InvalidateCache"restful webservice的正确方法是什么?
我正在使用Drowpizard 0.7.1,但也许我很快会升级到0.8.4.
有没有人知道如何向dropwizard添加管理资源,这在操作菜单中显示,如下例所示?
Operational Menu
Metrics
Ping
Threads
Healthcheck
CustomAdminXy
Run Code Online (Sandbox Code Playgroud) 我需要为django管理界面设置一个favicon.
最好是在全球范围内完成,而不是覆盖所有应用程序的模板.
最干净的方法是什么?我尝试搜索Django文档,但没有找到任何结果.