在Django中的外键中分配实例

时间:2015-04-08 01:25:12

标签: django django-models django-queryset

之前我遇到过这种错误,我可以解决它,但现在我不知道发生了什么,我该如何解决?

我得到了:

  

无法分配“u'2'”:“ClosedBets.bet_user_a”必须是“团队”   实例

我的模特:

class ClosedBets(models.Model):
    match = models.ForeignKey(Match2x1)
    user_a = models.ForeignKey(User,related_name="+")
    bet_user_a = models.ForeignKey(Teams,related_name="bet_user_a")
    user_b = models.ForeignKey(User)
    bet_user_b = models.ForeignKey(Teams,related_name='bet')

    def __unicode__(self):
        match = "%s VS %s"%(self.match.team_a,self.match.team_b)
        return match

我的观点:

 z = Bets.objects.filter(match_id=request.POST['match']).exclude(user=self.request.user).filter(~Q(bet_id=request.POST['team']),value=request.POST['valor'])
                bet = z.first()
                if bet:
                    print bet.match_id
                    print bet.user_id
                if z: #SI HAY Z
                    ClosedBets.objects.create(match_id=request.POST['match'],user_a=self.request.user,bet_user_a=request.POST['team'],user_b=bet.user_id,bet_user_b=bet.match_id)

1 个答案:

答案 0 :(得分:1)

matchbet_user_a是外键,因此您无法为这些字段分配简单的字符串/整数。因此,您必须从数据库中获取FK模型的实例,并在create()调用中分配它们:

ClosedBets.objects.create(
                   match=Match2x1.objects.get(pk=request.POST['match']),
                   user_a=self.request.user,
                   bet_user_a=Teams.objects.get(pk=request.POST['team']),
                   user_b=bet.user_id,
                   bet_user_b=bet.match_id)

另请注意,ClosedBets模型中的字段名为match,但您尝试使用match_id字段创建实例。