Получить первичный ключ после сохранения модели Model в Django
Как получить первичный ключ после сохранения ModelForm? После того, как форма была подтверждена и сохранена, я хотел бы перенаправить пользователя в вид contact_details, для которого требуется первичный ключ контакта.
def contact_create(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse(contact_details, args=(form.pk,)))
else:
form = ContactForm()
Ответы
Ответ 1
Возврат ModelForm save сохраненный объект.
Попробуйте следующее:
def contact_create(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
new_contact = form.save()
return HttpResponseRedirect(reverse(contact_details, args=(new_contact.pk,)))
else:
form = ContactForm()
Ответ 2
В случае, когда вы установили form.save(commit = False), потому что вы хотите изменить данные, и у вас есть отношение "многие ко многим", тогда ответ немного отличается:
def contact_create(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
new_contact = form.save(commit=False)
new_contact.data1 = "gets modified"
new_contact.save()
form.save_m2m()
return HttpResponseRedirect(reverse(contact_details, args=(new_contact.pk,)))
else:
form = ContactFrom()
https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/#the-save-method