如何获取数据并将其编辑为Django的编辑形式

时间:2018-06-17 02:54:22

标签: python django

我使用Django创建了一个类似网页的博客,我希望它具有“编辑”功能。我为我的博客创建了一个编辑页面(问题),但我无法将数据放入我的编辑表单(edit_issue) ,有人请帮忙吗?

view.py

def edit_issue(request, project_id,issue_id):
    issue = get_object_or_404(Issue, id=issue_id)
    if request.method == 'POST':
        form = NewIssueForm(request.POST,instance=issue)
        if form.is_valid():
            issue = form.save(commit=False)
            issue.author = request.user
            issue.save()
            return redirect('project:issue_tracker:issue_detail',project_id=project_id,issue_id=issue_id)
    else:
        form = NewIssueForm()
    template = 'issue_tracker/issue/edit_issue.html'
    context = {'form': form}
    return render(request, template, context)

urls.py

from django.conf.urls import url
from django.urls import path
from . import views

app_name = 'issue_tracker'

urlpatterns =[
    path('',views.list_of_issue,name='list_of_issue'),
    path('<int:issue_id>/',views.issue_detail,name='issue_detail'),
    path('<int:issue_id>/comment',views.add_comment,name='add_comment'),
    path('new_issue/',views.new_issue,name='new_issue'),
    path('<int:issue_id>/edit_issue/',views.edit_issue,name='edit_issue'),
]

forms.py

class NewIssueForm(forms.ModelForm):
    class Meta:
        model = Issue
        fields = ('title','content','project','status')

edit_issue.py

{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block content %}
    <h1>Issue Update</h1>
    <form method="POST" class="Issue-form">{% csrf_token %}
        {{form|crispy}}
        <button type="submit" class="btn btn-success">Submit</button>
    </form>

{% endblock %}

1 个答案:

答案 0 :(得分:1)

这里看一看。

def edit_issue(request, project_id,issue_id):
        issue = get_object_or_404(Issue, id=issue_id)
        if request.method == 'POST':
            form = NewIssueForm(request.POST,instance=issue)
            if form.is_valid():
                issue = form.save(commit=False)
                issue.author = request.user
                issue.save()
                return redirect('project:issue_tracker:issue_detail',project_id=project_id,issue_id=issue_id)
        else:
            form = NewIssueForm(instance=issue)
        template = 'issue_tracker/issue/edit_issue.html'
        context = {'form': form}
        return render(request, template, context)

您需要在加载编辑页面时提供实例,这在else: form = NewIsssueForm(instance=issue)

中完成