Django如何从ModelForm获取记录ID

时间:2017-10-14 21:50:16

标签: django django-forms

我几周来一直在敲打这个问题,但我决心让ModelForm工作!当您使用从ModelForm接收的数据处理POST时,我知道您需要从数据库中获取原始记录,然后使用该原始记录作为“实例”创建新表单。这是documented in the Django docs如下:

>>> from myapp.models import Article
>>> from myapp.forms import ArticleForm

# Create a form instance from POST data.
>>> f = ArticleForm(request.POST)

# Save a new Article object from the form's data.
>>> new_article = f.save()

# Create a form to edit an existing Article, but use
# POST data to populate the form.
>>> a = Article.objects.get(pk=1)
>>> f = ArticleForm(request.POST, instance=a)
>>> f.save()

在这个例子中,他们知道他们正在寻找的记录的pk是1.但是,如果你从request.POST读取数据,你怎么知道pk,假设POST是基于你之前的数据写到屏幕上? ModelForm不存储pk。那么,你从哪里拿起来的?没有它,你怎么知道从DB中取出哪条记录(如上面'a')?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在网址中使用named groups将参数传递给您的视图。

所以,如果你有一个像:

的网址
url(r'^articles/update/(?P<article_id>[0-9]+)/$', views.update_article)

您可以在视图中使用:

def update_article(request, article_id=None):
    pass