2013-02-16 3 views
0

Привет у меня есть следующая проблема (извините за мой плохой английский)питон Django Невозможно назначить «<Juego: Juego объекта>»: «Prediccion.idjuego» должен быть экземпляром «Juego»

У меня есть следующие модели

у меня есть 3 модели, которые «предвидение» имеет два внешних ключей от модели «Juego» и модели «» Новичок

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)) 

ответ

0

ваш idjuego является внешним ключом, поэтому значение должно быть эквивалентно идентификатору,

попробовать:

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

Кроме того, в каждом из ваша модель, пожалуйста, поместите unicode, чтобы он не возвращал «< объект>». Вот пример:

def __unicode__(self): 
    return self.field_name 
+1

Нельзя назначить «16L»: «Prediccion.idjuego» должен быть экземпляром «Juego». –

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

ForeignKey поля хранить их значение в атрибуте с _id в конце, который вы можете получить доступ непосредственно, чтобы избежать посещения базы данных.

_id версия ForeignKey является особенно полезным аспектом Django, который каждый должен знать и использовать время от времени, когда это необходимо.