繁体   English   中英

如何获取数据并将其放入Django的编辑表单中

[英]How to get data and put it into edit form Django

我使用Django创建了一个类似Web的博客,并希望它具有“编辑”功能。我为我的Blog(问题)创建了一个编辑页面,但是我无法将数据放入我的编辑表单(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 %}

这里看看。

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)需要通过else: form = NewIsssueForm(instance=issue)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM