提交与此 View 关联的表单时出现此错误。不确定到底是什么问题,考虑到我有一个结构非常相似的表单并且它工作正常。
#views.py
class Facture_Creer(SuccessMessageMixin, CreateView):
model = Facture
template_name = "facturation/nouvelle_facture.html"
form_class= FormulaireFacture
# permet de retourner a l'URL pointant vers le membre modifie
def get_success_url(self):
return reverse_lazy('facture_consulter',kwargs={'pk': self.get_object().id})
class Facture_Update(SuccessMessageMixin, UpdateView):
model = Facture
template_name = "facturation/nouvelle_facture.html"
form_class= FormulaireFacture
success_message = "Facture mise à jour avec succes"
# permet de retourner a l'URL pointant vers le membre modifie
def get_success_url(self):
return reverse_lazy('facture_consulter',kwargs={'pk': self.get_object().id})
#urls.py
urlpatterns = patterns('',
url(r'^$', TemplateView.as_view(template_name="facturation/index.html")),
url(r'^facture/$', FactureView.as_view()),
url(r'^facture/(?P<id>\d+)', FactureView.as_view(), name='facture_consulter'),
url(r'^facture/ajouter/$', Facture_Creer.as_view(), name='facture_creer'),
url(r'^facture/modifier/(?P<pk>\d+)/$', Facture_Update.as_view(), name='facture_update'),
url(r'^membre/ajouter/$', Membre_Creer.as_view(), name='membre_creer'),
url(r'^membre/modifier/(?P<pk>\d+)/$', Membre_Update.as_view(), name='membre_update'),
#url(r'membre/(?P<pk>\d+)/supprimer/$', Membre_Supp.as_view(), name='membre_delete')
)
urlpatterns += staticfiles_urlpatterns()
最佳答案
您需要传递一个对象标识符(pk 或 slug),以便您的 View 知道它们正在操作哪个对象。
仅以您的 urls.py
为例:
url(r'^facture/ajouter/$', Facture_Creer.as_view(), name='facture_creer'),
url(r'^facture/modifier/(?P<pk>\d+)/$', Facture_Update.as_view(), name='facture_update'),
看看第二个有(?P<pk>\d+)/
?那就是将 pk 传递给 UpdateView,以便它知道要使用哪个对象。因此,如果您转到 facture/modifier/5/
,则 UpdateView 将修改 pk 为 5 的对象。
如果您不想在 url 中传递 pk 或 slug,则需要覆盖 get_object()方法并以另一种方式获取您的对象。网址 here .
关于python - Django:必须使用对象 pk 或 slug 调用通用详细 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23154525/