自定義記錄返回值班 和 表名
class Guys(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) email = models.EmailField() def __str__(self): # 記錄返回值pyton 2用__unicode__ return u'%s %s' % (self.first_name, self.last_name) class Meta: # 定義表名 verbose_name = '人員管理' verbose_name_plural = '人員管理'
關聯字段做字 search字段
models.py: class ApplyTag(models.Model): tag = models.CharField('應用實例名', max_length=64) note = models.CharField('備注', max_length=64, null=True, blank=True) def __str__(self): return self.tag class RealServer(models.Model): """ WEB源站 """ apply_name = models.ForeignKey('ApplyTag', verbose_name='應用名', null=True, blank=True) host = models.ForeignKey('Host',verbose_name='主機') bindip_host_eth = models.CharField('主機服務綁定IP的網卡', max_length=2, choices=bindip_host_eth_choices, default='00') port = models.IntegerField('服務端口', null=True, blank=True)
admin.py: class RealServerAdmin(admin.ModelAdmin): list_display = ('apply_name', 'host', 'port') search_fields = ('apply_name__tag',) # 以__ 表示關聯字段屬性 raw_id_fields = ('host',) admin.site.register(models.RealServer, RealServerAdmin)
list_display = ('first_name', 'last_name', 'email') #添加字段,以列表顯示,not a ManyToManyField
search_fields = ('first_name', 'last_name') #頁面添加查詢欄
list_filter = ('publication_date',) #添加過濾(這里是過濾日期)
exclude = ('xxx',) # 排除字段
date_hierarchy = 'publication_date' #過濾(日期的另外一種過濾方式,可以添加后看一下)
ordering = ('-publication_date',) #排序(這里以日期排序,加‘-’表示降序)
fields = ('title', 'authors', 'publisher') #排除一些不想被其他人編輯的fields(不包含在內的不能編輯,這里publication_date不能編輯了)
filter_horizontal = ('authors',) #從‘多選框’的形式改變為‘過濾器’的方式,水平排列過濾器,must be a ManyToManyField,且不能用於 ForeignKey字段,默認地,管理工具使用`` 下拉框`` 來展現`` 外鍵`` 字段
filter_vertical = ('authors',) #同上,垂直排列過濾器
raw_id_fields = ('publisher',) #將ForeignKey字段從‘下拉框’改變為‘文本框’顯示
自定義字段顯示(自定義列)
from django.contrib import admin class PayAccount(models.Model): customer = models.OneToOneField(Customer, verbose_name=u'客戶') balance = models.FloatField(verbose_name=u'余額(元)', default=0) remark = models.CharField(max_length=200, verbose_name='備注', null=True, blank=True) def __unicode__(self): return self.customer.name class Meta: verbose_name = u'預繳賬戶' verbose_name_plural = u'預繳賬戶' #admin.py class PayAccountModelAdmin(CustomizeModelAdmin): def get_account_state(self, obj): if obj.balance < 0: return u'<span style="color:red;font-weight:bold">%s</span>' % (u"已欠費",) elif obj.balance <= 50: return u'<span style="color:orange;font-weight:bold">%s</span>' % (u"余額不足",) else: return u'<span style="color:green;font-weight:bold">%s</span>' % (u"正常",) get_account_state.short_description = u'賬戶狀態' get_account_state.allow_tags = True list_display = ['customer', 'balance', 'get_account_state', 'remark']
效果: