免責事項:thisとその他の関連する質問がありますが、 。ModelForm: 'unicode'オブジェクトを使用してモデルインスタンスを更新する場合、 '_meta'属性はありません
私のアプリでは、ユーザーはモデルKursのインスタンスを表示したり編集したりすることができます。私は2つのアクションについて2つのビューを持っています。次のようにモデルの詳細は、KURSは以下のとおりです。
class Kurs(models.Model):
prowadzacy = models.ForeignKey(User)
nazwa = models.CharField(max_length=200)
[skipping some fields...]
def __unicode__(self):
return self.nazwa
class Meta:
verbose_name_plural = "Kursy"
だから、あなたはそれがユニコード方法とメタクラスを持って見ることができるように。
私が使用しているのModelFormが、この単純なものです:
class KursForm(ModelForm):
class Meta:
model = Kurs
fields = "__all__"
次のように関連するビューが(私は今、クラスベースのビューを使用したくない)です:
def editcourse(request, pk):
kurs_id = pk
if request.method=='POST':
form = KursForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/polls/usersite')
else:
form = KursForm(instance=pk)
return render(request, 'polls/editcourse.html', {"form" : form})
私のurlpatternsは
url(r'^editcourse/(?P<pk>[0-9]+)/$', views.editcourse, name='editcourse')
が含まれていると私はリンクが含まれているページからビューを呼んでいる「kur」は、Kursである。
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
ユーザーが「EDIT THIS COURSE」をクリック残念なことに、何が起こることははAttributeError「ユニコード」オブジェクトが属性「_meta」との最後の数行を持っていないです:私のeditcourse.htmlには、以下が含まれていますトレースバックは
File "[my path here]/views.py" in editcourse
84. form = KursForm(instance=pk)
File "/usr/local/lib/python2.7/dist-packages/Django-1.10.3-py2.7.egg/django/forms/models.py" in __init__
282. object_data = model_to_dict(instance, opts.fields, opts.exclude)
File "/usr/local/lib/python2.7/dist-packages/Django-1.10.3-py2.7.egg/django/forms/models.py" in model_to_dict
87. opts = instance._meta
Exception Type: AttributeError at /polls/editcourse/6/
Exception Value: 'unicode' object has no attribute '_meta'
私は間違っていますか? Kursモデルに空の '_meta'クラスを追加する必要がありますか?