0
我正在处理我的第一个django应用程序。我正在构建一个允许用户评价啤酒的应用程序。我希望我的用户能够编辑他们已经创建的条目。我带他们到ModelForm,并要求他们进入。当POST方法被调用时,我的数据是无效的。这里是我的model.py:使用ModelForm编辑模型数据:ModelForm验证错误
from django.db import models
class Rating(models.Model):
beer_name = models.TextField()
score = models.DecimalField(max_digits=2, decimal_places=1)
notes = models.TextField(blank=True)
brewer = models.TextField(blank=True)
和forms.py:
from django import forms
from ratings.models import Rating
class RatingForm(forms.ModelForm):
class Meta:
model = Rating
fields = ['beer_name', 'score', 'notes', 'brewer']
这里是我的编辑功能的views.py:
def edit(request, row_id):
rating = get_object_or_404(Rating, pk=row_id)
if request.method == "POST":
form = RatingForm(request.POST, instance=rating)
if form.is_valid():
form.save()
return redirect(home)
else:
return HttpResponse("Invalid entry.")
else:
context = {'form': rating}
form = RatingForm(instance=rating)
return render(
request,
'ratings/entry_def.html',
context
)
然而,每次POST被称为我得到一个“无效的条目。” HttpResponse,意思是我的form.is_valid()被返回False。这是我的模板:
{% extends "base.html" %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<h2>Edit Rating</h2>
<form role="form" method="post">
{% csrf_token %}
<p>Beer Name: <textarea>{{ form.beer_name }}</textarea></p>
<p>Score: <input type="text" name="BeerScore" value="{{ form.score }}"></p>
<p>Notes: <textarea>{{ form.notes }}</textarea></p>
<p>Brewer: <textarea>{{ form.brewer }}</textarea></p>
<p><button type="submit" class="save btn btn-primary">Save</button></p>
<p><button type="reset" class="btn btn-primary">Cancel</button></p>
</form>
</div>
</div>
</div>
{% endblock %}
所以,当我按下我的保存按钮,我得到的回应。这里是我的urls.py编辑网址:
urlpatterns = [
...
url(r'rating/edit/(?P<row_id>[0-9]+)/$', edit , name='rating-edit'),
]
真棒!每次我尝试关闭HTML标记时,文本都不可编辑。它只会显示文字。非常感谢! – user3251349
不客气。总是乐于提供帮助。 – Brandon