【发布时间】:2019-02-15 09:02:04
【问题描述】:
我正在尝试创建“Partita”模型的实例,但我不想使用表单手动设置字段;我需要使用一个随机整数来设置字段(它们是两个 ForeignKey),该整数引用外键的 id。
这是为了创建一种足球比赛的创建者,其中“Partita”(意大利语比赛)由 team1 和 team2(在我的代码“casa”和“trasferta”中)组成我该怎么做?
我试过了,但它抛出:页面未找到,没有 FantaSquadra 匹配给定的查询。
views.py:
def createPartite(request):
num1=0
num2=0
gior=0
while num1==num2:
num1 = str(random.randint(1,3))
num2 = str(random.randint(1,3))
if num1!=num2:
gior=gior+1
cas= get_object_or_404(FantaSquadra, pk=num1)
tra= get_object_or_404(FantaSquadra, pk=num2)
partita = Partita.creaP(cas,tra)
partita.save()
contesto = {
'partita': partita
}
return render(request, 'sondaggio/partite.html',contesto)
models.py:
class FantaSquadra(models.Model):
proprietario = models.ForeignKey(User, on_delete=models.CASCADE,unique=True)
nome_fantasquadra = models.CharField(max_length=200,unique = True)
punteggio = models.IntegerField(default=0)
def __str__(self):
return self.nome_fantasquadra
class Partita(models.Model):
giornata = models.IntegerField(default=1)
casa=models.ForeignKey(FantaSquadra,on_delete=models.CASCADE, related_name='fantasquadra_casa', unique=True)
traferta = models.ForeignKey(FantaSquadra, on_delete=models.CASCADE, related_name='fantasquadra_trasferta', unique=True)
def __str__(self):
return "giornata "+str(self.giornata)
def creaP(self,cas,trasfert):
self.casa = cas
self.traferta = trasfert
return self
【问题讨论】:
-
请修正您的代码缩进。在 Python 中,严重缩进的代码是 BROKEN(不可执行)代码(被否决,当代码被修复时将被取消投票)。
-
对不起,我对 StackOverflow 不是很实际
-
这个错误让您感到困惑的是什么?您显然没有 ID 为 1 或 2 的 FantaSquadra 实例。
-
@DanielRoseman 你说得对,ID 是 11 和 12(1 和 2 不存在),现在我用正确的 ID 修复它,现在它抛出另一个错误(答案下的评论布鲁诺·德舒利耶)
-
那个 creaP 方法有什么意义呢?它没有做任何有用的事情。特别是,尽管有这个名字,它实际上并没有创建一个 Partita。您应该直接在视图中执行此操作:
Partita.objects.create(casa=cas, traferta=tra)。