[pyar] Duda con modelos en Django

Tordek kedrot en gmail.com
Mie Jul 12 18:43:21 ART 2017


Como te dice ahí: el problema es que le estás pasando un
QuerySet([{id:1}]), pero ForeignKey espera un modelo.

El otro problema es que no sé qué es tu objeto `datos` al que llamás
`datos('id')`; pero fijate que te pasa un QuerySet, y no un id.

Al parametro tareas que pasarle un objeto "Tareas", o indicarle que se
lo estás pasando por id, con `_id` al final del nombre:

    rastreo = Rastreos(fechahora=ahora, tarea_id=id_tarea)


2017-07-12 18:00 GMT-03:00 Alan Rizzo <alan.rizzo en gmail.com>:
> Por lo q veo rapidamente e falta instanciar la clase tareas.
>
> El 12 jul. 2017 5:50 PM, "Juan Manuel" <jmdedio en gmail.com> escribió:
>>
>> Hoa a todos:
>>
>> Estoy desarrollando mi primera aplicación de escrapeo con backend en
>> Django (es mi primera vez con Django) y tengo un problema con la claves
>> foraneas.  Los modelos son:
>>
>> class Tareas(models.Model):
>>     cliente = models.ForeignKey(Clientes, on_delete=models.CASCADE,
>> verbose_name=(u'Id Clentes'))
>>     sitio = models.ForeignKey(Sitios, on_delete=models.CASCADE,
>> verbose_name=(u'Id Sitios'))
>>     clave = models.ForeignKey(Claves, on_delete=models.CASCADE,
>> verbose_name=(u'Id Claves'))
>>     frecrastreo = models.ForeignKey(FrecuenciaRastreos,
>> on_delete=models.CASCADE, verbose_name=(u'Id FrecuenciaRastreos'))
>>     descripcion = models.CharField(max_length=200,
>> verbose_name=(u'descripción'))
>>     falta = models.DateTimeField(verbose_name=(u'fecha de alta'))
>>     fbaja = models.DateTimeField(blank=True, null=True,
>> verbose_name=(u'fecha de baja'))
>>
>>     def __str__(self):
>>         return self.descripcion
>>
>>     class Meta:
>>         verbose_name=(u'Tarea')
>>         verbose_name_plural=(u'Tareas')
>>
>> class Rastreos(models.Model):
>>     fechahora = models.DateTimeField(verbose_name=(u'Fecha hora'))
>>     tarea = models.ForeignKey(Tareas, on_delete=models.CASCADE,
>> verbose_name=(u'Id Tareas'))
>>
>>     def __str__(self):
>>         return self.fechahora
>>
>>     class Meta:
>>         verbose_name=(u'Rastreo')
>>         verbose_name_plural=(u'Rastreos')
>>
>> Es decir, para cada tarea habrá varios rastreos.  Tengo entonces; una
>> función que carga los escrapeos pero cuando intento agregar un registro
>>
>> def rastrea(datos):
>>             insert_rastreos(strftime("%Y-%m-%d %H:%M:%S"), datos('id'))
>>
>>
>> def insert_rastreos(ahora, id_tarea):
>>     rastreo = Rastreos(fechahora=ahora, tarea=id_tarea)
>>     rastreo.save()
>>
>> Sale el siguiente error: ValueError: Cannot assign "<QuerySet [{'id':
>> 1}]>": "Rastreos.tarea" must be a "Tareas" instance.
>>
>> ¿Qué estoy haciendo mal?
>>
>> Saludos
>>
>>
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar


Más información sobre la lista de distribución pyar