Python 如何在不选择“项目”(手动选择项目id)的情况下创建新问题?
我正在使用Django创建一个任务管理web应用程序来完成我的学校项目。我的职责是创建“问题跟踪器”,类似于“StackOverflow”,但我仍处于非常早期的阶段。因此,我使用crispy表单让用户创建自己的新问题。由于我们使用'project_id'和'issue_id'作为参数来引导用户访问不同的页面,因此我遇到了这个问题,用户在创建新问题时必须手动选择'project'。我不知道如何将用户创建的问题放在正确的项目下,而不必手动选择“项目” form.pyPython 如何在不选择“项目”(手动选择项目id)的情况下创建新问题?,python,django,Python,Django,我正在使用Django创建一个任务管理web应用程序来完成我的学校项目。我的职责是创建“问题跟踪器”,类似于“StackOverflow”,但我仍处于非常早期的阶段。因此,我使用crispy表单让用户创建自己的新问题。由于我们使用'project_id'和'issue_id'作为参数来引导用户访问不同的页面,因此我遇到了这个问题,用户在创建新问题时必须手动选择'project'。我不知道如何将用户创建的问题放在正确的项目下,而不必手动选择“项目” form.py from django impo
from django import forms
from .models import Comment,Issue
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('body',)
class IssueForm(forms.ModelForm):
class Meta:
model = Issue
fields = ('title','content','project','status')
class NewIssueForm(forms.ModelForm):
class Meta:
model = Issue
fields = ('title','content','project','status')
new_issue.html
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<h1>Add New Issue </h1>
<form method="POST" class="Issue-form">{% csrf_token %}
{{form|crispy}}
<button type="submit" class="btn btn-success">Submit</button>
</form>
{% endblock %}
url.py
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'),
path('<int:issue_id>/delete_issue/',views.delete_issue,name='delete_issue'),
path('<int:issue_id>/delete', TemplateView.as_view(template_name="issue_tracker/issue/nice_delete.html"), name='success_deletion'),
]
可以在问题表单中为项目字段设置初始值。可以找到如何做到这一点的解释
由于您使用的是project_id和issue_id作为参数,我想类似于以下内容的内容将解决您的问题:
def new_issue(request, project_id, issue_id):
.
.
form = IssueForm(initial={'project': project_id})
.
.
这看起来很酷!而且它有效!您知道如何禁用此按钮,以便用户无法手动更改其项目吗?我附上了一张截图@Alfarhan ZahediJust在form=IssueForminitial={'project':project_id}-form.fields['project'].widget.attrs['disabled']=True之后使用此行
def new_issue(request, project_id, issue_id):
.
.
form = IssueForm(initial={'project': project_id})
.
.