Djangoモデルで
from django.db import models class Article(models.Model): text = models.TextField()
みたいになってる時、Django Admin の管理サイトを見ると、<textarea .... rows="10" ... みたいなHTMLが出力される。
この、rowsの値を変えたい時は、admin.pyで
# -*- coding: utf-8 -*- from django.contrib import admin from blog.models import Article, Category from django.db import models from django import forms class AdminTextareaWidgetLarge(forms.Textarea): def __init__(self, attrs=None): final_attrs = {'class': 'vLargeTextField', 'rows': 40} if attrs is not None: final_attrs.update(attrs) super(AdminTextareaWidgetLarge, self).__init__(attrs=final_attrs) class ArticleAdmin(admin.ModelAdmin): formfield_overrides = { models.TextField:{'widget': AdminTextareaWidgetLarge}, } admin.site.register(Article, ArticleAdmin)
こんな風にして、新しいWidgetを作って、 formfield_overrides に突っ込むといいんじゃないかな。
できれば、'rows': 40 だけをどこかに定義するだけで実現させたいが、やり方がわからなかった。
django.forms.widgets.Textarea を直接書き換えるって手も……ないな。
コメント