Python 如何在不选择“项目”(手动选择项目id)的情况下创建新问题?

Python 如何在不选择“项目”(手动选择项目id)的情况下创建新问题?,python,django,Python,Django,我正在使用Django创建一个任务管理web应用程序来完成我的学校项目。我的职责是创建“问题跟踪器”,类似于“StackOverflow”,但我仍处于非常早期的阶段。因此,我使用crispy表单让用户创建自己的新问题。由于我们使用'project_id'和'issue_id'作为参数来引导用户访问不同的页面,因此我遇到了这个问题,用户在创建新问题时必须手动选择'project'。我不知道如何将用户创建的问题放在正确的项目下,而不必手动选择“项目” form.py from django impo

我正在使用Django创建一个任务管理web应用程序来完成我的学校项目。我的职责是创建“问题跟踪器”,类似于“StackOverflow”,但我仍处于非常早期的阶段。因此,我使用crispy表单让用户创建自己的新问题。由于我们使用'project_id'和'issue_id'作为参数来引导用户访问不同的页面,因此我遇到了这个问题,用户在创建新问题时必须手动选择'project'。我不知道如何将用户创建的问题放在正确的项目下,而不必手动选择“项目”

form.py

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})
    .
    .