Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 创建实例后编辑另一个模型_Python_Django_Django Models_Django Forms - Fatal编程技术网

Python 创建实例后编辑另一个模型

Python 创建实例后编辑另一个模型,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我发现很难实现以下情景: 在我的应用程序中,用户创建了一个项目,现在他可以将以前创建的团队链接到该项目,或者创建一个新团队 一个团队可以是许多项目的一部分,但一个项目只能链接到一个团队 型号.py: class Team(models.Model): team_name = models.CharField(max_length=100, default = '') team_hr_admin = models.ForeignKey(MyUser, blank=True, nul

我发现很难实现以下情景:

在我的应用程序中,用户创建了一个项目,现在他可以将以前创建的团队链接到该项目,或者创建一个新团队

一个团队可以是许多项目的一部分,但一个项目只能链接到一个团队

型号.py

class Team(models.Model):
    team_name = models.CharField(max_length=100, default = '')
    team_hr_admin = models.ForeignKey(MyUser, blank=True, null=True)

    def __str__(self):
        return self.team_name

class TeamMember(models.Model):
    user = models.ForeignKey(MyUser)
    team = models.ForeignKey(Team)

    def __str__(self):
        return self.user.first_name

class Project(models.Model):
    name = models.CharField(max_length=250)
    team_id = models.ForeignKey(Team, blank=True, null=True)
    project_hr_admin = models.ForeignKey(MyUser, blank=True, null=True)

    def get_absolute_url(self):
        return reverse('website:ProjectDetails', kwargs = {'pk' : self.pk})

    def __str__(self):
        return self.name 
视图.py

class ProjectCreate(CreateView):
    model = Project
    fields = ['name']
    template_name = 'project_form.html'

    def form_valid(self, form):
        form.instance.project_hr_admin = self.request.user
        return super(ProjectCreate, self).form_valid(form)

class ProjectDetailView(generic.DetailView):
    model = Project
    template_name = 'project_details.html'

class TeamCreate(CreateView):
    model = Team
    fields = ['team_name']
    template_name = 'team_form.html'

    def form_valid(self, form):
        obj = form.save(commit=False)
        obj2 = Project.team_id
        obj2 = obj.team_id
        obj2.save()
        print("sucess")
我希望当用户创建一个团队时,如果成功创建了该团队,就可以这样做。使用相应的
团队id
自动添加到项目模型中


任何帮助都将不胜感激。提前谢谢

那么,您可以使用您的用户id(团队id为null)获取项目。 在
TeamCreate()
视图的
form\u valid
方法中:

def form_valid(self, form):
     valid = super(TeamCreate, self).form_valid(form)
     obj = form.save()
     obj2 = Project.objects.get(project_hr_admin=self.request.user, team_id=None)
     obj2.team_id = obj
     obj2.save()
     return valid
在这里,您只需获得一个项目,该项目的用户为admin,团队id为null

但是警告,如果管理员创建两个没有团队的项目,请求
Project.objects.get(…)
将引发错误,因为它将返回多个对象

因此,您必须确保始终创建一个项目,然后创建一个团队


希望能有帮助

是否尝试使用模型继承?创建团队时,是否希望创建相应的项目?自动?不。。创建项目时,要求用户提供名称,团队id为空。然后用户创建一个团队。。我希望在创建团队时,团队id从空白更改为刚刚为您的答案创建的团队id,但它引发了一个错误:raise FieldError('Related Field get invalid lookup:{}'。格式(lookups[0]))django.core.exceptions.FieldError:相关字段获得无效查找:is_null您可以尝试使用
团队id\u id\u_is_null=True
?我得到相同的:异常类型:FieldError at/website/addteam/Exception值:相关字段获得无效查找:is_null
团队id=None
?我获得网站模型。多个对象返回:get()返回了多个项目--它返回了3!。。你不认为问题更多的是:project\u hr\u admin=self.request.user;项目管理是一封电子邮件