0

こんにちは、次の問題があります(下手な英語で申し訳ありません)

私は次のモデルを持っています

「Prediccion」には「Juego」モデルと「Usuario」モデルの 2 つの外部キーを持つ 3 つのモデルがあります。

class Juego(models.Model):
    #id = models.IntegerField(primary_key=True, db_column='Id')
    equipoa = models.CharField(max_length=135, db_column='EquipoA')
    equipob = models.CharField(max_length=135, db_column='EquipoB')
    resultadoa = models.IntegerField(null=True, db_column='ResultadoA', blank=True)
    resultadob = models.IntegerField(null=True, db_column='ResultadoB', blank=True)
    fecha = models.DateField(null=True, db_column='Fecha', blank=True)
    class Meta:
        db_table = u'juego'

class Usuario(models.Model):
    # id = models.IntegerField(primary_key=True, db_column='Id') # Field name made lowercase.
    nombre = models.CharField(max_length=135, db_column='Nombre') 
    fechanacimiento = models.DateField(null=True, db_column='FechaNacimiento', blank=True) 
    nombreusuario = models.CharField(max_length=135, db_column='NombreUsuario') 
    clave = models.CharField(max_length=135, db_column='Clave') 
    class Meta:
        db_table = u'usuario'

class Prediccion(models.Model):
    #id = models.IntegerField(primary_key=True, db_column='Id')
    idusuario = models.ForeignKey(AuthUser, db_column='IdUsuario') 
    idjuego = models.ForeignKey(Juego, db_column='IdJuego') # Field name made lowercase.
    equipoa = models.IntegerField(null=True, db_column='EquipoA', blank=True)
    equipob = models.IntegerField(null=True, db_column='EquipoB', blank=True) 
    resultado = models.IntegerField(null=True, db_column='Resultado', blank=True)
    class Meta:
        db_table = u'prediccion'

そして、私は次の見解を持っていますか

from django.shortcuts import render_to_response
from scorecenter.JuegoApp.models import Juego
from scorecenter.PrediccionApp.models import Prediccion
from scorecenter.PrediccionApp.models import TipoResultado
from scorecenter.PrediccionApp.models import AuthUser

def juegosap(request, pagina="1", idgame=-1, resa=-1, resb=-1):
    if(idgame==-1 and resa==-1 and resb==-1):
        pag = int(pagina)
        pag = pag-1
        lista = Juego.objects.order_by('-fecha', '-id')[pag*4:pag*4+4]
        template_name = 'juegos_semana.html'
        return render_to_response(template_name,{'lista':lista})
    else:
        game = Juego.objects.get(id=int(idgame))
        print(game.equipoa)
        print(game.id)
        user = AuthUser.objects.get(username=request.user)
        print(user.username)
        temporal = Prediccion(idusuario = user, idjuego = game, equipoa=int(resa), equipob=int(resb))
        temporal.resultado = 1
        temporal.save()
        pag = int(pagina)
        pag = pag-1
        lista = Juego.objects.order_by('-fecha')[pag*4:pag*4+4]
        template_name = 'juegos_semana.html'
        return render_to_response(template_name,{'lista':lista})

しかし、次のエラーが発生します。

Cannot assign "<Juego: Juego object>": "Prediccion.idjuego" must be a "Juego" instance.
in the next line:
temporal = Prediccion(idusuario = user, idjuego = game, equipoa=int(resa), equipob=int(resb)) 
4

2 に答える 2

0
temporal.idjuego_id = game.id
temporal.save()

ForeignKey フィールドは、データベースにアクセスせずに直接アクセスできる、末尾に _id を持つ属性に値を格納します。

ForeignKey の _id バージョンは、Django の特に便利な側面であり、誰もが知っていて、必要に応じて使用する必要があります。

于 2013-02-17T20:15:41.607 に答える
0

idjuego は外部キーであるため、値は id と同等でなければなりません。

試す:

temporal = Prediccion(idusuario = user, idjuego = game.id, equipoa=int(resa), equipob=int(resb))

また、各モデルには「<オブジェクト>」を返さないようにUnicodeを入れてください。以下にサンプルを示します。

def __unicode__(self):
    return self.field_name
于 2013-02-16T17:55:41.570 に答える