Как открыть подробный вид в редактируемом формате, как показано на странице администратора? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь показать пользователю введенные данные в редактируемом формате, как мы видим в

Редактировать:

Изменил код и попытался объяснить вопрос в лучшем видеway

view.py

def change_contact(request, contact_id):
    try:
        form = AddToPhoneBookForm(instance=Contact.objects.get(pk=contact_id))
        form.instance.user = request.user
        if form.is_valid():
            form.save()
            form = AddToPhoneBookForm()

        context = {
            'form': form
        }

        return render(request, "CallCenter/add_to_phone_book.html", context)

forms.py

class AddToPhoneBookForm(forms.ModelForm):
    class Meta:
        model = Contact
        fields = ['first_name', 'last_name', 'phone_number', 'phone_book']

Это представление загружает формы так, как я хочу, но внесенные здесь изменения не отражаются вбаза данных. Куда я иду не так?

1 Ответ

3 голосов
/ 18 октября 2019

Для этого вам нужно использовать get () вместо filter () . Get возвращает один объект, тогда как фильтр возвращает набор запросов

contact = Contact.objects.get(phone_book__id=phone_book_id)

И в шаблоне вам не нужно использовать forloop {{contact.first_name}} даст результат для вас

РЕДАКТИРОВАТЬ: вы сохраните данные с запросом POST, поэтому вам нужно обрабатывать также запрос POST, и есть многоо вещах, которые вам нужно знать, пожалуйста, прочитайте документы

и измените свой взгляд следующим образом

 def change_contact(request, contact_id):
        contact = Contact.objects.get(pk=contact_id)
        form = AddToPhoneBookForm(instance=contact)
        if request.method == 'POST':
            form = AddToPhoneBookForm(request.POST,instance=contact)        
            if form.is_valid():
               obj=form.save(commit=False)
               obj.user = request.user
               obj.save()
               return redirect('some-path')
        context = {
            'form': form,'contact':contact
        }

        return render(request, "CallCenter/add_to_phone_book.html", context)
...