好的。我只是想在 Django 中制作一个表单,我可以用它来输入有关新记录的数据或更新现有记录,这让我自己陷入了困境。

如果有这个模型,任何人都可以在我的表单、视图和网址中勾画出我应该拥有的正确内容吗?:

class Person(models.Model) :
  name = models.CharField()
  age = models.IntegerField()

在另一个页面中,我想要一个指向表单的链接,该链接允许我创建一个人的新实例或编辑一个现有实例。

我感到困惑的事情:

  • 我是否需要在 urls.py 上有两行不同的行,一行链接到空白表单,不传递 id,另一行在传递 id 时链接到表单?

  • 我是否需要两种不同的视图,一种在保存实例之前接收表单,另一种在实例存在时接收表单?

我确信我已经在views.py 中看到过通过一个链接和一个函数完成此操作,但我似乎无法再将其正确化。似乎不起作用的是尝试发送带有 id 的 url

  /edit/id

并且没有

  /edit/ 

到具有 id 默认参数的同一视图函数

 def edit(request,id=0) :
    blah

那么什么是 正确的 方法来做到这一点?

干杯。菲尔

有帮助吗?

解决方案

设置 urls.py 以捕获 id 变量(如果包含在 url 中),然后检查 views.py 中是否为 null

你的 urls.py 可能看起来像这样:

(r'^edit/(?P<person_id>\w+)/$', 'mysite.myapp.views.edit_person'),

然后,在你的views.py中:

def edit_person(person_id=None):
    if(person_id): #show populated form
    else: # show empty form
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top