问题描述
提交与此视图关联的表单时出现此错误。考虑到我有一个结构非常相似的表单,而且工作正常,因此不确定是什么问题。
Getting this error when submitting the form associated with this view. Not sure what exactly is the problem, considering I have a form with a very similar structure and it works fine.
#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),以便您的视图知道它们正在操作的对象。
You need to pass an object identifier (pk or slug) so your views know which object they're operating on.
仅需t从您的 urls.py
中举个例子:
Just to take an example from your 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的对象。
See how the second one has (?P<pk>\d+)/
? That is passing a pk to the UpdateView so it knows which object to use. Thus if you go to facture/modifier/5/
, then the UpdateView will modify object with pk of 5.
如果您不想在网址中传递pk或slug,则需要覆盖 get_object
方法并以另一种方式获取对象。网址。
If you don't want to pass a pk or slug in your url, you'll need to override the get_object
method and get your object another way. Url here.
这篇关于Django:必须使用对象pk或子弹调用通用详细视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!