python - Django:必须使用对象 pk 或 slug 调用通用详细 View

标签 python django

提交与此 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/

相关文章:

python - 覆盖模板 django-allaut

python - 如何在测试中检查返回值的类型

python - 如何在for循环中移动多只 turtle ?

Django 管理站点未显示 CSS 样式

django - 'QueryDict' 对象在 Django 中没有属性 'caption'

python - django - 自定义过滤器无法正常工作

python - 获取文章->产品关系的最低价目表

python - 如何在列表中查找所有出现的元素

jquery - 当值有空格时输入隐藏值属性

python - 无需 token 即可抓取受密码保护的网站