django admin model使用技巧

 

自定義記錄返回值班 和 表名django

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字段app

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') #頁面添加查詢欄spa

list_filter = ('publication_date',) #添加過濾(這裏是過濾日期)code

exclude = ('xxx',)  # 排除字段blog

date_hierarchy = 'publication_date' #過濾(日期的另一種過濾方式,能夠添加後看一下)排序

ordering = ('-publication_date',) #排序(這裏以日期排序,加‘-’表示降序)ip

fields = ('title', 'authors', 'publisher') #排除一些不想被其餘人編輯的fields(不包含在內的不能編輯,這裏publication_date不能編輯了)unicode

filter_horizontal = ('authors',) #從‘多選框’的形式改變爲‘過濾器’的方式,水平排列過濾器,must be a ManyToManyField,且不能用於 ForeignKey字段,默認地,管理工具使用`` 下拉框`` 來展示`` 外鍵`` 字段rem

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']

效果:

相關文章
相關標籤/搜索