在 Django 的外键中分配一个实例
Assign an Instance in a ForeingKey in Django
我以前遇到过这种错误,我可以修复它,但现在我不知道发生了什么,我该如何修复它?
我得到:
Cannot assign "u'2'": "ClosedBets.bet_user_a" must be a "Teams"
instance.
我的模特:
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)
match
和 bet_user_a
是外键,因此您不能将简单的 strings/integers 分配给这些字段。所以你必须从数据库中获取 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
字段创建实例。
我以前遇到过这种错误,我可以修复它,但现在我不知道发生了什么,我该如何修复它?
我得到:
Cannot assign "u'2'": "ClosedBets.bet_user_a" must be a "Teams" instance.
我的模特:
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)
match
和 bet_user_a
是外键,因此您不能将简单的 strings/integers 分配给这些字段。所以你必须从数据库中获取 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
字段创建实例。