ああ。こんにちは、私は非常に単純なジャンゴの質問があります:
そして、ああ、すみません、読んで読んで、これはどこかで非常に明白にカバーされていると確信していますが、見つけられませんでした!
django を使用してモデルを編集/更新するにはどうすればよいですか? 同様に、データ値は?モデルフィールドではありませんか?
これが私のコードです!(私は自家製のものを使用しています!)
ここにURLがあります:
url(r'^editStory/(?P<id>\d+)$',
StoryModelView.as_view(
context_object_name='form',
template_name ='stories/editStory.html',
success_template= 'stories/editStorySuccess.html'
),
{},
'editStory'
),
ビューは次のとおりです。
def get(self,request,id=None):
form = self.getForm(request,id)
return self.renderValidations(form)
def getForm(self, request,id):
if id:
return self.getModelById(request,id)
return StoryForm()
def getModelById(self,request,id):
theStory = get_object_or_404(Story, pk=id)
if theStory.user != request.user:
raise HttpResponseForbidden()
return StoryForm(theStory)
def renderValidations(self,form):
if self.context_object_name:
contextName = self.context_object_name
else:
contextName = 'form'
if self.template_name:
return render_to_response(self.template_name,{contextName:form})
else :
return render_to_response('stories/addStory.html',{contextName:form})
def getPostForm(self,request,id):
if id:
theStory = self.idHelper(request,id)
return StoryForm(request.POST,theStory)
return StoryForm(request.POST)
def processForm(self,form,request):
theStory = form.save(commit=False)
theStory.user = request.user
return theStory
テンプレートコードは次のとおりです。
{% block content %}
<h3>Edit story</h3>
<form action="" method="post">
{% csrf_token %}
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
<input type="submit" value="Submit"/>
</form>
{% endblock %}
私ができる限り試してください、私はどちらか:
- エラーを取得する
- 何も得ない
この行が原因で、表示されているコードでエラーが発生します
{% for field in form %}
そして次のエラーで:
Caught AttributeError while rendering: 'Story' object has no attribute 'get'
または、「getModelById」メソッドを次のように変更すると、何も取得されません。データはまったくありません。
def getModelById(self,request,id):
theStory = get_object_or_404(StoryForm, pk=id)
if theStory.user != request.user:
raise HttpResponseForbidden()
return theStory
StoryForm はその "ModelForm" の 1 つで、そのモデルは "Story" です。
それで!質問:
このコードを修正して機能させるにはどうすればよいですか? 私は何を間違えましたか?