私は最初の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 %}
私は[保存]ボタンを押すと応答が表示されます。ここに私の編集URLはurls.pyである:
urlpatterns = [
...
url(r'rating/edit/(?P<row_id>[0-9]+)/$', edit , name='rating-edit'),
]
恐ろしい:
あなたのビューには、いくつかのクリーンアップを使用することができます!
ようこそ。常に喜んで助けてください。 – Brandon