zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    虚函数和纯虚函数
    MS CRM 2011中PartyList类型字段的实例化
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(4)
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第二部分)——IOrganizationService(二)
    MS CRM 2011 SDK 5.08已经发布
    MS CRM 2011 Q2的一些更新
    最近很忙
    Microsoft Dynamics CRM 2011最近的一些更新
    补一篇,Update Rollup 12 终于发布了
  • 原文地址:https://www.cnblogs.com/weiming-cheng/p/5303472.html
Copyright © 2011-2022 走看看