Django将当前模型/原始HTML输入转换为Form以保存输入数据

时间:2014-02-03 06:03:16

标签: python html django forms

我有一个简单的表单,其中有用户名和消息。单击提交按钮后,我希望将用户和消息的数据分别存储到数据库中。我目前在m.save()

上收到了IntegrityError
 "Exception Value: SimpleMessage_message.content may not be NULL"

并被告知使用表单来完成此任务。但是,我很困惑如何使用表单将表单数据传递给单个用户和消息模型,以便将输入数据保存在数据库中。

模型

class User (models.Model):
    name = models.CharField(max_length=20)

    def __unicode__(self):              
        return self.name

class Message (models.Model):
    content = models.TextField(max_length=140, null=True, blank=True)
    user = models.ForeignKey(User)
    time = models.DateTimeField()

    def __unicode__(self):              
        return self.content

views.py

def index (request):
    if request.method == 'POST':
        u = User(name=request.POST.get('user'))
        u.save()
        m = Message(content=request.POST.get('text'), user = u)
        m.save()
        return render_to_response('index.html', {
                'user': u,
                'message': m,
                }, RequestContext(request))
    else:
        u = User()
        m = Message()
        return render_to_response('index.html', {
                'user': u,
                'message': m,
                }, RequestContext(request)

的index.html

<form action="{% url 'index' %}" method = "post">
    {% csrf_token %}
    <input type="text" name="user" id="user" maxlength="20" placeholder = "Username">
    <br>
    <br>
    <textarea rows="4" cols="35" id="text" name="text" maxlength="140" placeholder = "Message goes here"></textarea><br>
    <input type="submit" value="Submit">
</form>

1 个答案:

答案 0 :(得分:0)

尝试更改模型,以便content可以为null:

class Message (models.Model):
    content = models.TextField(max_length=140, null=True, blank=True)

或者以表格形式提供默认值:

m = Message(content=request.POST.get('text', ' '), user = u)