我有一个简单的表单,其中有用户名和消息。单击提交按钮后,我希望将用户和消息的数据分别存储到数据库中。我目前在m.save()
"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>
答案 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)