【发布时间】:2015-05-17 21:52:52
【问题描述】:
我试图让用户从前端输入一个任务,并让该数据实例化一个新模型,并将这个新字段添加到与其帐户关联的数据库中。我尝试了以下方法;
个人资料 HTML
<form id="taskitem_form" method="post" action="/">
{% csrf_token %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form.visible_fields %}
{{ field.errors }}
{{ field.help_text }}
{{ field }}
{% endfor %}
<input type="submit" name="submit" value="Add Task" class ="btn btn-primary" />
</form>
型号
class TaskItem(models.Model):
taskn = models.CharField(max_length = 400)
usern = models.ForeignKey(User)
def __str__(self):
return self.taskn
观看次数
def add_task(request):
# Get the context from the request.
#context = RequestContext(request)
# A HTTP POST?
if request.method == 'POST':
form = TaskItemForm(request.POST)
# Have we been provided with a valid form?
if form.is_valid():
task = form.save(commit=False)
task.usern = request.user
task.save()
# we should redirect after data modifying
return redirect('/user/%s' %(request.user))
else:
# If the request was not a POST, display the form to enter details.
return render(request, 'profile.html', {'form': form})
# Bad form (or form details), no form supplied...
# Render the form with error messages (if any).
return render(request, 'profile.html', {'form': form})
表格
from django import forms
from bkmks.models import TaskItem
class TaskItemForm(forms.ModelForm):
taskn = forms.CharField(max_length = 300, help_text = "Please enter your task")
# An inline class to provide additional information on the form.
class Meta:
fields = ('taskn', 'usern' )
#This is the association between the model and the model form
model = TaskItem
【问题讨论】:
-
TaskItemForm 在 fields 参数中仅显示
taskn。usern字段呢?您应该在表单验证中自行设置。 -
您还没有说明问题所在。一个与表单无关的明显问题是您没有在 render_to_response 调用中指定模板(它应该是第一个参数,由于某种原因你有一个 / 代替)。
-
我的 html 页面上看不到任何文本框。添加“/”的目的是为了不发生重定向或重定向到主页。我只是测试一下,看看数据是否可以输入并显示在数据库中。
-
重定向和渲染是完全不同的东西。您发布的代码会产生错误,因为第一个参数必须是模板名称。请发布实际代码。
-
return render_to_response("profile.html", {'form': form, }, context_instance = RequestContext(request)) 可以吗?
标签: django django-models django-forms