如何在不选择' project'(手动选择project_id)的情况下创建新问题?

时间:2018-06-18 22:41:03

标签: python django

enter image description here我正在通过使用Django创建任务管理Web应用程序来完成我的学校项目。我的职责是创建“跟踪器”,类似于“StackOverflow”,但我还处于早期阶段。所以我用crispy表单让用户创建自己的新问题。因为我们使用' project_id'和' issue_id'作为将用户引导到不同页面的参数,所以我遇到了这个问题,用户必须手动选择' project'当他们创造一个新问题。我不知道如何将用户创建的问题放在正确的项目中,而不必选择“项目”。手动

form.py

{% 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 %}

new_issue.html

class Issue(models.Model):
    STATUS_CHOICES = (
        ('draft', 'Draft'),
        ('published', 'Published'),
    )
    project = models.ForeignKey(Project,on_delete=models.CASCADE)
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    published = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=9, choices=STATUS_CHOICES, default='draft')

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Issue, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('project:issue_tracker:issue_detail', kwargs={'project_id':self.project_id, 'issue_id':self.id})

    def __str__(self):
        return self.title

models.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'),
]

urls.py

replace_word(word, nthOcurrence, toReplace, replaceWith , Result)

1 个答案:

答案 0 :(得分:1)

您可以在问题表单中为项目字段设置初始值。可以找到关于如何做到这一点的解释here

由于您使用project_idissue_id作为参数,类似于以下内容将解决您的问题(我猜):

def new_issue(request, project_id, issue_id):
    .
    . 
    form = IssueForm(initial={'project': project_id})
    .
    .