簡體   English   中英

Django ValueError-將用戶添加到userteam

[英]Django ValueError - add user to userteam

我正在創建一個Django表單,您可以在其中將用戶添加到UserTeam(下面的UserTeams模型)。 “邀請”頁面(如下)查詢團隊模型以獲取當前團隊的ID,然后將其分配給“團隊ID”,因此您只能將用戶添加到當前團隊中。 (我已禁用此字段,因此用戶無法更改團隊。)然后,用戶選擇要添加的用戶,然后提交表單。 我正在嘗試使用“ Kate FC”團隊,並添加玩家“ steven”。 但是,當我提交表單時,出現此錯誤:

位於/ teams / 1 / invite /的ValueError

無法分配“'Kate FC'”:“ UserTeams.teamID”必須是“ Team”實例。

這個錯誤是什么意思??

class UserTeams(models.Model):
    userID = models.ForeignKey(User,on_delete=models.CASCADE)
    teamID = models.ForeignKey(Team,on_delete=models.CASCADE)

class Team(models.Model):
    name = models.CharField(max_length=100)
    venue = models.CharField(max_length=100)
    countryID = models.ForeignKey(Countries, on_delete=models.CASCADE)
    owner = models.ForeignKey(User)


def invite(request, teamID):
    try:
        query = Team.objects.get(id=teamID)
    except:
        raise Http404()
    if request.method == 'POST':
        form = InvitePlayerForm(request.POST or None, initial={'teamID': query})
        if form.is_valid():
            userteam = form.save(commit=False)
            userteam.save()
        return redirect('teammanager/teams.html')
    else:

        form = InvitePlayerForm(initial={'teamID': query})
        query = Team.objects.get(id=teamID)
    return render(request, 'teammanager/invite.html', {
        "team": query,                  
        "form": form
   })

表格:

    class InvitePlayerForm(forms.ModelForm):
    teamID = forms.CharField(disabled=True)
    class Meta:

        model = UserTeams
        fields = ['teamID','userID']

teamID是一個外鍵,因此您應該使用模型選擇字段而不是CharField:

class InvitePlayerForm(forms.ModelForm):
    teamID = forms.ModelChoiceField(queryset=Team.objects.all(), disabled=True)
    ...

或者您可以在__init__方法中禁用該字段。

class InvitePlayerForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(InvitePlayerForm, self).__init__(*args, **kwargs)
        self.fields['teamID'].disabled = True
    ...

或者,您可以將teamID字段保留在teamID之外,並在保存表單時設置值:

if form.is_valid():
    userteam = form.save(commit=False)
    userteam.teamID = query
    userteam.save()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM