2014-05-05 72 views
0

我知道這可能是非常基本的東西,但我真的很難找出答案。我有一個存儲用戶體育預測的應用程序,因此他們輸入主隊,評分和客隊評分。這個想法是讓應用通過比較兩個輸入框的分數來確定結果是主場勝利,平局還是客場勝利。如何比較2個字段並在Django中輸入結果

這是我的看法:

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」

一切正常,因爲它應該除了這部分在那裏我已經收到此錯誤:

AttributeError的在/ INICIO/ 「元組」對象有沒有屬性「本地」

它抱怨這一行: 如果pronostico.Local> pronostico.Visita:

任何幫助將不勝感激,謝謝!

回答

0

這裏的問題是從get_or_create()返回的值。從the documentation

Returns a tuple of (object, created), where object is the retrieved or created object and created is a boolean specifying whether a new object was created.

那麼試試這個來代替:

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

感謝凱文,它沒有顯示了一個錯誤,但它也不能節省「Resultado」,這應該是「本地」的合適的答案,「Empate」或「Visita」是否有辦法做到這一點?我究竟做錯了什麼? – edalco9

+0

@ user3605164:看起來你並沒有調用'pronostico.save()'。當你分配給'prognostico.Resultado'時,你正在改變對象的內存版本,但是你需要調用'save()'來把這個改變保存到數據庫中。 –

+0

就是這樣!非常感謝您對使用get_or_create和將方法保存在同一視圖中感到困惑。 – edalco9

相關問題