[pyar] django problemas uso de la clase meta y el atributo db_table en DB Oracle

Martin Dimondo martin.dimondo en gmail.com
Vie Jul 10 11:22:52 ART 2015


¡Hola Daniel!

Bienvenido entonces al mundo Python (y aprovecho también para presentarme
en la lista).

Cuando no se sobreescriben los meta options Django genera como nombre de
tabla [APP_LABEL]_[MODEL_NAME], según veo vos especificás la inner class
meta, pero su nombre correcto es Meta (con M mayúscula). Python es case
sensitive.

Seguro tu app se llama "consultas", por eso te requiere el nombre de tabla
consultas_webcustomer.


Espero haberte ayudado,
Abrazo,

Martin Dimondo

El 10 de julio de 2015, 10:40, Daniel Julio Stamm <danieljstamm en gmail.com>
escribió:

> Saludos gente, les comento, soy nuevo en el mundo Python y por ende
> django. Mi problema es el siguiente:
> Estoy creando el modelo sobre unas tablas pre-existentes en una base
> oracle. El tema es que al setear el atributo db_table de la clase meta
> dandole el nombre real no hay cambios e intenta hacer select a la tabla que
> django nombra por defecto. Para ser más claro les paso la definición de la
> clase en models.py
>
> from __future__ import unicode_literals
> from django.db import models
>
> # Create your models here.
> class WebCustomer (models.Model):
>     username = models.CharField(max_length=30,primary_key=True)
>     customer_id = models.DecimalField(max_digits=15,decimal_places=0)
>     name = models.CharField(max_length=60)
>
>     class meta:
>         managed = False
>         db_table = '"web_customer"'
>
>     def __str__ (self):
>         return str(self.customer_id) + ', ' + self.username
>
> Al intentar hacer un select de todo con WebCustomer.objects.all() devuelve
> el error ORA-00942: table or view does not exist.
>
> Y al hacer un trace de la consulta con django.db.connection
>
> sale lo siguiente
>
> [{'time': '2.945', 'sql': 'QUERY = \'SELECT * FROM (SELECT "_SUB".*,
> ROWNUM AS "_RN" FROM (SELECT "CONSULTAS_WEBCUSTOMER"."USERNAME" AS Col1,
> "CONSULTAS_WEBCUSTOMER"."CUSTOMER_ID" AS Col2,
> "CONSULTAS_WEBCUSTOMER"."NAME" AS Col3 FROM "CONSULTAS_WEBCUSTOMER") "_SUB"
> WHERE ROWNUM <= 21) WHERE "_RN" > 0\' - PARAMS = ()'}]
>
> Lo suplí creando una tabla con el nombre CONSULTAS_WEBCUSTOMER pero me
> gustaría saber cual es la solución ya que no siempre voy a poder hacer ésto.
>
> Si alguien me puede ayudar ...
> Gracias de antemano
> Daniel
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150710/99c90a30/attachment.html>


More information about the pyar mailing list