如何比较2个字段并在Django中输入结果

时间:2014-05-05 17:12:28

标签: django django-views

我知道这可能是非常基本的东西,但我真的很难搞清楚。我有一个应用程序存储用户的体育预测,所以他们输入主队,得分和客队的得分。这个想法是让应用程序通过比较两个输入框上的分数来确定结果是主场胜利,平局还是客场胜利。

这是我的观点:

def inicio(request):
    if request.method == "POST":
        form = Pronosticos(request.POST)
        if form.is_valid():
            pronostico = PartidosUsuarios.objects.get_or_create(idUsuario=request.user, idPartido=request.POST.get("idPartido", ""), PaisL=request.POST.get("PaisL", ""), Local=request.POST.get("Local", ""), Visita=request.POST.get("Visita", ""), PaisV=request.POST.get("PaisV", ""), Capturado="Si")
            if pronostico.Local > pronostico.Visita:
                pronostico.Resultado = "Local"
            elif pronostico.Visita > pronostico.Local:
                pronostico.Resultado = "Visita"
            elif pronostico.Local == pronostico.Visita:
                pronostico.Resultado = "Empate"
            return render(request, "brasil/inicio.html")
    partidos_fifa = PartidosFifa.objects.order_by("Partido")[:64]
    context = {"partidos_fifa": partidos_fifa}
    return render(request, "brasil/inicio.html", context)

表格:

class Pronosticos(ModelForm):
    class Meta:
        model = PartidosUsuarios
        fields = ["idPartido", "PaisL", "Local", "Visita", "PaisV"]

和模型:

class PartidosUsuarios(models.Model):
    idUsuario = models.OneToOneField(User)
    idPartido = models.CharField(max_length=20)
    PaisL = models.CharField(max_length=250)
    Local = models.IntegerField(max_length=11, default=0)
    Visita = models.IntegerField(max_length=11, default=0)
    PaisV = models.CharField(max_length=250)
    Resultado = models.CharField(max_length=250)
    Puntos = models.IntegerField(max_length=11, default=0)
    Capturado = models.CharField(max_length=10, default="No")
    def __unicode__(self):
        return unicode(self.idPartido)

有问题的字段,即我想要存储结果的地方称为“Resultado”

一切正常,除了这部分,我一直在收到这个错误:

/ inicio /中的AttributeError 'tuple'对象没有属性'Local'

这是在抱怨这条线: 如果pronostico.Local> pronostico.Visita:

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

此处的问题是get_or_create()的返回值。来自the documentation

  

返回(object,created)的元组,其中object是检索或创建的对象,并且创建的是一个布尔值,指定是否创建了新对象。

所以试试这个:

pronostico, _ = PartidosUsuarios.objects.get_or_create(...)