之前我遇到过这种错误,我可以解决它,但现在我不知道发生了什么,我该如何解决?
我得到了:
无法分配“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)
答案 0 :(得分:1)
match
和bet_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
字段创建实例。