---
slug: "AdminのTextFieldのtextareaを広げる"
title: "AdminのTextFieldのtextareaを広げる"
description: "\n\n\nDjangoモデルで"
url: "https://www.ytyng.com/blog/AdminのTextFieldのtextareaを広げる"
publish_date: "2011-06-10T16:17:44Z"
created: "2011-06-10T16:17:44Z"
updated: "2026-02-27T10:42:45.297Z"
categories: ["Django"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/e176c137634942a98de7d21074a0557c.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# AdminのTextFieldのtextareaを広げる

<div class="document">


<p>Djangoモデルで</p>
<pre class="literal-block">from django.db import models

class Article(models.Model):
    text = models.TextField()
</pre>
<p>みたいになってる時、Django Admin の管理サイトを見ると、&lt;textarea .... rows="10" ... みたいなHTMLが出力される。</p>
<p>この、rowsの値を変えたい時は、admin.pyで</p>
<pre class="literal-block"># -*- 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)
</pre>
<p>こんな風にして、新しいWidgetを作って、 formfield_overrides に突っ込むといいんじゃないかな。</p>
<p>できれば、'rows': 40 だけをどこかに定義するだけで実現させたいが、やり方がわからなかった。</p>
<p>django.forms.widgets.Textarea を直接書き換えるって手も……ないな。</p>
</div>
