gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:36 25 4
gpt4 key购买 nike

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

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

一个团队可以参与多个项目,但一个项目仅与一个团队相关联。

models.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

views.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")

我希望当用户创建团队时,并且团队创建成功。使用相应的 team_id 自动添加到项目模型。

如有任何帮助,我们将不胜感激。提前致谢!

最佳答案

好吧,您可以使用您的用户 ID 来获取 team_id 为空的项目。在 TeamCreate() View 的 form_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

在这里,您只需获取以您的用户为管理员且 team_id 为空的项目。

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

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

希望有帮助。

关于python - 创建实例后编辑另一个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46190545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com