• Django修改admin后台管理表单


    新定义的表单django.forms.ModelForm--做为客户端的控制

    管理模块django.admin.ModelAdmin --做为服务端的控制

    在models.py中我有如下的数据库Blog
    #coding: utf-8
    from django.db import models


    # Create your models here.

    class Blog(models.Model):
        caption = models.CharField(max_length=200,verbose_name=u"标题")
    content = models.TextField(verbose_name="内容")
    visit = models.IntegerField(verbose_name=u"访客")
    weight = models.IntegerField(verbose_name=u"权重")
    date  = models.DateField(auto_now=True, verbose_name=u"更新时间")
    class Meta:
            verbose_name = u"文章"
    def __unicode__(self):
            return '%s %s'%(self.caption,self.date)
    对应的默认后台管理表单

    如果要修改客户端显示,即主要修改forms.ModelForm,主要的几个属性就是widget、CharField等
    class BlogForm(forms.ModelForm):
        content = forms.CharField(initial='like oldrss',widget=forms.Textarea(attrs={'class':'vLargeTextField'}))
        image = forms.ImageField()
        visit = forms.CharField(initial=0,widget=forms.TextInput(attrs={'readonly':'true'}))
        uid = forms.CharField(initial=0, widget=forms.TextInput(attrs={'readonly':'true'}))
        class Meta:
            forms.model = Blog
    forms的属性可以这样查看

    >>> dir(django.forms)
    [u'ALL_FIELDS', u'BaseForm', u'BaseModelForm', u'BooleanField', u'CharField', u'
    CheckboxInput', u'CheckboxSelectMultiple', u'ChoiceField', u'ClearableFileInput'
    , u'ComboField', u'DateField', u'DateInput', u'DateTimeField', u'DateTimeInput',
    u'DecimalField', u'EmailField', u'EmailInput', u'Field', u'FileField', u'FileIn
    put', u'FilePathField', u'FloatField', u'Form', u'GenericIPAddressField', u'Hidd
    enInput', u'IPAddressField', u'ImageField', u'IntegerField', u'Media', u'MediaDe
    finingClass', u'ModelChoiceField', u'ModelForm', u'ModelMultipleChoiceField', u'
    MultiValueField', u'MultiWidget', u'MultipleChoiceField', u'MultipleHiddenInput'
    , u'NullBooleanField', u'NullBooleanSelect', u'NumberInput', u'PasswordInput', u
    'RadioSelect', u'RegexField', u'Select', u'SelectMultiple', u'SlugField', u'Spli
    tDateTimeField', u'SplitDateTimeWidget', u'TextInput', u'Textarea', u'TimeField'
    , u'TimeInput', u'TypedChoiceField', u'TypedMultipleChoiceField', u'URLField', u
    'URLInput', 'ValidationError', u'Widget', '__builtins__', '__doc__', '__file__',
    '__name__', '__package__', '__path__', 'absolute_import', 'fields', u'fields_fo
    r_model', 'forms', 'formsets', u'model_to_dict', 'models', u'save_instance', 'ut
    il', 'widgets']
    修改表单显示
    from django import forms

    class BlogForm(forms.ModelForm):
        content = forms.CharField(initial='like oldrss',widget=forms.Textarea(attrs={'class':'vLargeTextField'}))
        image = forms.ImageField()
        visit = forms.CharField(initial=0,widget=forms.TextInput(attrs={'readonly':'true'}))
        uid = forms.CharField(initial=0, widget=forms.TextInput(attrs={'readonly':'true'}))
        class Meta:
            forms.model = Blog
    其中initial初始化表单的值,相当于value的值。widget后面的参数attrs是属性设置。

    控制表单的显示
    class BlogAdmin(admin.ModelAdmin):
        list_display = ('caption','uid','date')#modify display
        search_fields = ('caption','uid')#add search
        list_filter = ('date',)
        date_hierarchy = 'date'
        form = BlogForm
        fields = ('caption','content','visit','weight')
    list_display 是ModelAdmin的一个属性,控制显示以上几个字段,searc_fields 控制显示一个搜索框,list_filter控制date为过滤选项等等。fields控制表单只显示如上的几个属性。

    以上即可以实现修改一个表单。一份较为完整的代码如下。
    from django.contrib import admin
    from models import *
    from django import forms

    class BlogForm(forms.ModelForm):
        content = forms.CharField(initial='like oldrss',widget=forms.Textarea(attrs={'class':'vLargeTextField'}))
        image = forms.ImageField()
        visit = forms.CharField(initial=0,widget=forms.TextInput(attrs={'readonly':'true'}))
        uid = forms.CharField(initial=0, widget=forms.TextInput(attrs={'readonly':'true'}))
        class Meta:
            forms.model = Blog



    class BlogAdmin(admin.ModelAdmin):
        list_display = ('caption','uid','date')#modify display
        search_fields = ('caption','uid')#add search
        list_filter = ('date',)
        date_hierarchy = 'date'
        form = BlogForm
        fields = ('caption','content','visit','weight')


    # Register your models here.
    admin.site.register(Blog,BlogAdmin)

  • 相关阅读:
    梯度方向问题
    switchsharp
    R语言学习笔记:sort、rank、order、arrange排序函数
    R语言学习笔记:choose、factorial、combn排列组合函数
    MySQL学习笔记:少用Null
    Oracle学习笔记:11g服务介绍及哪些服务必须开启?
    GreenPlum学习笔记:create or replace function创建函数
    Python学习笔记:出生日期转化为年龄
    Python学习笔记:import sys模块(argv、path、platform、exit)
    Oracle学习笔记:wm_concat函数合并字段
  • 原文地址:https://www.cnblogs.com/weiming-cheng/p/5303472.html
Copyright © 2020-2023  润新知