gpt4 book ai didi

python - Django ModelForm 排除所需的多对多字段

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

我有这些模型

class Team(models.Model):

title=models.CharField(max_length=50)
picture=models.ImageField(upload_to='documents/%Y/%m/%d',null=True)
admins = models.ManyToManyField(Profile, related_name="team_admins")
members = models.ManyToManyField(Profile, related_name="team_members")
gender=models.CharField(max_length=1, choices=GENDER_CHOICES,default='M')


created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)

def __str__(self):
return self.title

class Profile(models.Model):

user = models.OneToOneField(User, related_name="profile")
birthdate = models.DateField(null=True, blank=True)
phone=models.CharField(null=True,blank=True,max_length=15)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
def __str__(self): # __unicode__ on Python 2
return self.user.username

用户应能够创建新团队。我希望创建团队的用户自动成为团队的管理员。他稍后可以将其他用户添加为管理员。所以我在我的表单和 View 中做到了这一点。

class TeamForm(ModelForm):
class Meta:
model=Team
exclude = ['created_date', 'modified_date', 'admins']

def CreateTeam(request):
user=request.user
prof=user.profile
if request.method == 'POST':
form=TeamForm(request.POST,request.FILES)
if form.is_valid():
t = form.save(commit=False)
t.admins= prof
# I also tried this
# t.admins.add(prof)
t.save()
form.save_m2m()


form=TeamForm()
return render(request, 'create_team.html', {'form' : form})

我收到此错误 "<Team: X>" needs to have a value for field "team" before this many-to-many relationship can be used.

我该如何解决这个问题?有没有更好的方法来自动将创建团队的用户添加到管理员中?我还需要多对多字段的 Through 参数吗?

最佳答案

尝试这样:

if form.is_valid():
t = form.save()
t.admins.add(prof)

关于python - Django ModelForm 排除所需的多对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27674569/

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