【问题标题】:How can I get a textarea from model+ModelForm?如何从模型+模型表单中获取文本区域?
【发布时间】:2012-02-04 09:00:48
【问题描述】:

models.py=>

from django.db import models
from django.forms import ModelForm
from datetime import date
import datetime
from django import forms
from django.forms import Textarea

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    created = models.DateField(auto_now_add=True)
    modified = models.DateField(auto_now_add=True)

    def __unicode__(self):
        return self.title

class PostModelForm(ModelForm):
    class Meta:
        model = Post

但是我得到了models.TextField() 的文本输入而不是文本区域。这是css的原因吗?

【问题讨论】:

    标签: python django forms model


    【解决方案1】:

    我认为文档中的这个section应该对解决问题很有用。

    from django.forms import ModelForm, Textarea
    
    class PostModelForm(ModelForm):
        class Meta:
            model = Post
            widgets = {
                'content': Textarea(attrs={'cols': 80, 'rows': 20}),
            }
    

    【讨论】:

    • 它是 models.CharField(),而不是 forms.CharField(),发布完整示例可能会有所帮助。
    • 抱歉,我之前的回答假设您直接使用forms 而不是ModelForm。新链接应提供您需要的信息。
    • 我试过了,但没用,我没有看到该文本区域的任何高度或重量。
    • 他使用了 cols 和 rows,但是您可以轻松地将一个类放入 attrs 和样式中(或者直接放入样式,但是为什么硬编码表示逻辑那么远后端?)
    • @Tom 我使用了与文档中相同的示例,但您是对的,最好将表示和业务逻辑分开。
    【解决方案2】:

    替代 jcollardo 的解决方案(结果相同,语法不同):

    from django import forms
    
    class PostModelForm(forms.ModelForm):
        content = forms.CharField(widget=forms.Textarea)
        class Meta:
            model = Post
    

    【讨论】:

    • 并添加 col/row 属性,例如: content = forms.CharField(widget=Textarea(attrs={'cols':80, 'rows': 20}))
    猜你喜欢
    • 2013-07-11
    • 2022-11-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多