Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-重定向后传递对象_Python_Django_Django Views - Fatal编程技术网

Python Django-重定向后传递对象

Python Django-重定向后传递对象,python,django,django-views,Python,Django,Django Views,我正在构建一个scrum应用程序,用户可以在其中创建用户故事并将其添加到Sprint中。我想有两种不同的方式来创造故事。如果用户正在从待办事项创建一个故事,那么已经创建的故事将不会分配给sprint,但是用户也可以从sprint的详细信息屏幕添加一个故事。我想这样做,如果他们从特定的sprint页面添加一个故事,该故事的sprint字段将填充该sprint 我尝试的方法是在views.py文件中创建两个不同的函数和两个单独的模板。我可以在不涉及sprint的情况下创建故事,但是我想不出一种方法来

我正在构建一个scrum应用程序,用户可以在其中创建用户故事并将其添加到Sprint中。我想有两种不同的方式来创造故事。如果用户正在从待办事项创建一个故事,那么已经创建的故事将不会分配给sprint,但是用户也可以从sprint的详细信息屏幕添加一个故事。我想这样做,如果他们从特定的sprint页面添加一个故事,该故事的sprint字段将填充该sprint

我尝试的方法是在views.py文件中创建两个不同的函数和两个单独的模板。我可以在不涉及sprint的情况下创建故事,但是我想不出一种方法来获取我导航到新模板的sprint的id

为了便于参考,我将创建与sprint无关的故事的功能包括:

def create_story(response, id=None):
    user = response.user
    if response.method == "POST":
        form = CreateNewUserStory(response.POST)
        if form.is_valid():
            name = form.cleaned_data["name"]
            description = form.cleaned_data["description"]
            status = form.cleaned_data["status"]
            assignee = form.cleaned_data["assignee"]
            estimate = form.cleaned_data["estimate"]
            userstory = UserStory(name=name, description=description, status=status, assignee=assignee, estimate=estimate)
            userstory.save()
            response.user.userstories.add(userstory)
            return HttpResponseRedirect("/backlog")
    else:
        form = CreateNewUserStory()
    return render(response, "main/create_story.html", {"form": form})
这是我的models.py文件:

from django.db import models
from django.contrib.auth.models import User, Group

class Sprint(models.Model):
    LENGTH_CHOICES = (('1_week', '1 Week'), ('2_weeks', '2 Weeks'), ('3_weeks', '3 Weeks'))
    name =  models.CharField(max_length=200)
    created_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name="sprints", null=True)
    project = models.ForeignKey(Group, on_delete=models.CASCADE, related_name="sprints", null=True)
    start_date = models.DateField(auto_now = False, auto_now_add = False)
    end_date = models.DateField(auto_now = False, auto_now_add = False)
    duration = models.CharField(max_length = 10, choices = LENGTH_CHOICES)
    complete = models.BooleanField(null = True, default = False)

    def __str__(self):
        return self.name 

class UserStory(models.Model):
    STATUS_CHOICES = (('To Do', 'To Do'),('In Progress', 'In Progress'), ('In Review', 'In Review'), ('Complete', 'Complete'))
    STORY_POINTS = ((0, 0), (1, 1), (2, 2), (3, 3), (5, 5), (8, 8), (13, 13), (20, 20), (40, 40), (100, 100))
    name = models.CharField(max_length=300)
    sprint = models.ForeignKey(Sprint, on_delete=models.CASCADE, related_name="userstories", null=True)
    description = models.CharField(max_length=300)
    status = models.CharField(max_length = 11, choices = STATUS_CHOICES, default = 'to do')
    assignee = models.ForeignKey(User, on_delete=models.CASCADE, related_name="userstories", null=True)
    estimate = models.IntegerField(choices = STORY_POINTS, default = 0)

    def __str__(self):
        return self.name

如果需要更多信息或代码,请告诉我,谢谢

可能会在表单“CreateNewUserStory”中为sprint ID添加一个可选的隐藏输入字段,并在用户从sprint页面创建故事时填充此字段。这样,它就包含在response.POST变量中,您可以轻松地将sprint(通过ID查询)添加到实例中。