免責聲明:我已閱讀this和一些其他相關問題,但要麼我沒有理解答案或討論的問題實際上是不同的。通過ModelForm更新模型實例:'unicode'對象沒有屬性'_meta'
在我的應用程序中,用戶可以查看模型的實例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"
因此,大家可以看到它有一個的Unicode方法和元級。
我使用的是的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})
我的URL模式包含
url(r'^editcourse/(?P<pk>[0-9]+)/$', views.editcourse, name='editcourse')
和我打電話從包含鏈接頁面視圖
<a href="{% url 'polls:editcourse' kur.id %}">EDIT THIS COURSE</a>
其中「庫爾」是一個庫爾斯。我editcourse.html包含以下內容:
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
不幸的是,當用戶點擊「編輯此課程」,會發生什麼情況是AttributeError的「統一」對象有沒有屬性「_meta」和最後幾行追溯是
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'類嗎?