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