正如标题所示.我希望能够更改管理应用程序中单个字段的标签.我知道Form.field属性,但是如何让我的Model或ModelAdmin传递这些信息呢?
在我的django应用程序中,我希望能够为我的一些模型添加自定义帮助文本到管理员更改表单.注意我不是在谈论help_text我可以在各个字段上设置的字段特定属性.例如,在变化形式的顶部,My_Model在My_App我想能够添加一些HTML,说:"有关我的模型的更多信息,请参阅http://example.com为了提供一个链接到一个"内部文档维基.
有没有简单的方法来实现这一点,还是我需要为模型创建自定义管理表单?如果是这样,你能举个例子说明我会怎么做吗?
我需要一个嵌套的django admin inline,我可以在下面的其他内联中包含日期字段内联.
我有以下型号:
class Person(models.Model):
name = models.CharField(max_length=200)
id_no = models.IntegerField()
class Certificate(models.Model):
cerfificate_no = models.CharField(max_length=200)
certificate_date = models.DateField(max_length=100)
person = models.ForeignKey(Person)
training = models.CharField(max_length=200)
class Training_Date(models.Model):
date = models.DateField()
certificate = models.ForeignKey(Certificate)
Run Code Online (Sandbox Code Playgroud)
以及以下管理员:
class CertificateInline(admin.StackedInline):
model = Certificate
class PersonAdmin(admin.ModelAdmin):
inlines = [CertificateInline,]
admin.site.register(Person,PersonAdmin)
Run Code Online (Sandbox Code Playgroud)
但我需要将Training_Date模型包含在内联中,这是证书管理员内联的一部分.
任何的想法 ?
我在网上商店应用程序中有一个Orders模型,它有一个自动递增的主键和一个自己的外键,因为订单可以拆分成多个订单,但必须保持与原始订单的关系.
class Order(models.Model):
ordernumber = models.AutoField(primary_key=True)
parent_order = models.ForeignKey('self', null=True, blank=True, related_name='child_orders')
# .. other fields not relevant here
Run Code Online (Sandbox Code Playgroud)
我已经为管理站点注册了OrderAdmin类.对于详细视图,我已经包含parent_order在fieldsets属性中.当然,默认情况下,它会列出选择框中的所有订单,但这不是所需的行为.相反,对于没有父订单的订单(即未从另一个订单拆分; parent_order是NULL/None),不应显示任何订单.对于已拆分的订单,此应仅显示单个父订单.
有一个相当新的ModelAdmin方法formfield_for_foreignkey,这似乎是完美的,因为查询集可以在其中进行过滤.想象一下,我们正在查看订单#11234的详细视图,该订单已从订单#11208拆分.代码如下
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'parent_order':
# kwargs["queryset"] = Order.objects.filter(child_orders__ordernumber__exact=11234)
return db_field.formfield(**kwargs)
return super(OrderAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
Run Code Online (Sandbox Code Playgroud)
注释行在Python shell中运行时返回,返回单项查询集,其中包含#11234的#11208订单以及可能已从中拆分的所有其他订单.
当然,我们不能在那里硬编码订单号.我们需要引用ordernumber订单实例的字段,我们正在查看其详细信息页面.像这样:
kwargs["queryset"] = Order.objects.filter(child_orders__ordernumber__exact=?????)
Run Code Online (Sandbox Code Playgroud)
我发现没有办法替换????? 参考"当前"订单实例,我挖得很深.selfinside formfield_for_foreignkey指的是ModelAdmin实例,虽然它确实有一个model属性,但它不是订单模型实例(它是ModelBase引用; self.model()返回一个实例,但它的ordernumber是None).
一个解决方案可能是从request.path(/ admin/orders/order/11234 /)中提取订单号,但这真的很难看.我真的希望有更好的方法.
好的,所以这里是瘦的:
# models.py
class Article( models.Model ):
title = models.CharField( max_length = 255 )
author = models.ForeignKey( User )
published_at = models.DateTimeField( auto_now_add = True )
body = models.TextField( )
def __unicode__( self ):
return self.title
# admin.py
from hpccoe.news.models import Article
from django.contrib import admin
from django import forms
from django.forms import widgets
class ArticleAdminForm( forms.ModelForm ):
title = forms.CharField( max_length = 255, required = True )
body = forms.CharField( required = True, widget = widgets.Textarea )
class ArticleAdmin( …Run Code Online (Sandbox Code Playgroud) 在Django的管理员中,我想禁用 "选择要更改的项目"页面上提供的链接,以便用户无法去任何地方编辑项目.(我将限制用户可以对此列表执行的操作到一组下拉操作 - 没有实际编辑字段).
我看到Django能够选择显示链接的字段,但是,我看不出我怎么也没有.
class HitAdmin(admin.ModelAdmin):
list_display = ('user','ip','user_agent','hitcount')
search_fields = ('ip','user_agent')
date_hierarchy = 'created'
list_display_links = [] # doesn't work, goes to default
Run Code Online (Sandbox Code Playgroud)
任何想法如何获取我的对象列表没有任何链接编辑?
Django有超级用户,员工,管理员......
超级用户和工作人员都在django.contib.auth.models.UserManager.然后有createsuperuser命令django-admin.
好吧,有管理员应用......有什么区别?
我想在现有的文件夹中启动新的django项目,显然得到了
CommandError: '/home/user/projectfolder' already exists.
Run Code Online (Sandbox Code Playgroud)
有没有办法强制startproject命令在现有文件夹中创建项目?我在该文件夹和git文件夹中有一些重要的数据,所以我不想将它移动到某个地方,然后将其移回.
我在django.contrib.auth.User和django.contrib.auth.Group的帮助下尝试使用Code
for g in request.user.groups:
l.append(g.name)
Run Code Online (Sandbox Code Playgroud)
但那失败了,我收到了以下错误:
TypeError at /
'ManyRelatedManager' object is not iterable
Request Method: GET
Request URL: http://localhost:8000/
Exception Type: TypeError
Exception Value:
'ManyRelatedManager' object is not iterable
Exception Location: C:\p4\projects\...\users.py in permission, line 55
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我一直在搞乱新的collectstatic命令,并让它适用于我的普通页面.也就是说,我可以在这个位置加载我的CSS http://localhost:8000/static/css/main.css.但是,我的django管理员的CSS似乎没有显示出来.
当我导航到admin css位置时http://localhost:8000/static/admin/css/base.css,我找不到404页面,但出现以下错误:/home/nai/GitProjects/cats/django-trunk/django/contrib/admin/media/css/base.css" does not exist.看着django-trunk,我从来没有/home/nai/GitProjects/cats/django-trunk/django/contrib/admin/media/开始使用该文件夹.
这有点奇怪吗?
在任何情况下,在我的静态文件夹中,都有一个admin文件夹,其中包含随附的css,img和js文件夹,这些文件夹是在我运行collectstatic时创建的,而base.css的url似乎指向该位置.
这发生在我的django开发服务器上.这里有一些片段可以帮助捕获bug:
网址
33 # In order for Dev Server to serve media files for the frontend site.
34 urlpatterns += staticfiles_urlpatterns()
35
36 try:
37 if settings.DEBUG: # defined in manage.py when the first arg is "runserver"
38 urlpatterns += patterns('',
39 (r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
40 (r'^media-admin/(?P<path>.*)$', 'django.views.static.serve',{'document_root': os.path.join(settings.MEDIA_ROOT, '..', settings.ADMIN_MEDIA_PREFIX)}),
41 )
42 except NameError:
43 pass
Run Code Online (Sandbox Code Playgroud)
我认为这可能与我的URLS文件中的第40行有关,但将media-admin更改为static/admin没有帮助.
设置
58 ADMIN_MEDIA_PREFIX …Run Code Online (Sandbox Code Playgroud)