Foros del Web » Programando para Internet » Python »

Referencia a la "clave unica" en el mismo modelo.

Estas en el tema de Referencia a la "clave unica" en el mismo modelo. en el foro de Python en Foros del Web. Que tal, tengo el modelo categorias: Código: class Categorias(models.Model): padre_id = models.ForeignKey(Categorias) orden = models.IntegerField(max_length=2) titulo = models.CharField(max_length=150,'Título') class Meta: order_with_respect_to = 'orden' Dado ese ...
  #1 (permalink)  
Antiguo 29/09/2012, 19:01
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 8 meses
Puntos: 4
Referencia a la "clave unica" en el mismo modelo.

Que tal, tengo el modelo categorias:

Código:
class Categorias(models.Model):
    padre_id = models.ForeignKey(Categorias)
    orden = models.IntegerField(max_length=2)
    titulo = models.CharField(max_length=150,'Título')
    
    class Meta:
        order_with_respect_to = 'orden'
Dado ese modelo necesito que el atributo padre_id apunte al id de esa misma tabla.

Es para tratar categorias y sub-categorias, si padre_id equivale a 0 significa que es una categoria padre, mientras que si es igual a un numero distinto de 0 es asi porque pertenece a una categoria con padre_id = 0

Como hago esto con django ? Gracias !
  #2 (permalink)  
Antiguo 29/09/2012, 22:42
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Referencia a la "clave unica" en el mismo modelo.

Me respondo solo:

padre_id = models.ForeignKey('self', blank=True, null=True, related_name='hijo')
  #3 (permalink)  
Antiguo 30/09/2012, 12:47
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Referencia a la "clave unica" en el mismo modelo.

Cita:
Iniciado por WebDeveloperZ Ver Mensaje
Que tal, tengo el modelo categorias:

Código:
class Categorias(models.Model):
    padre_id = models.ForeignKey(Categorias)
    orden = models.IntegerField(max_length=2)
    titulo = models.CharField(max_length=150,'Título')
    
    class Meta:
        order_with_respect_to = 'orden'
Dado ese modelo necesito que el atributo padre_id apunte al id de esa misma tabla.

Es para tratar categorias y sub-categorias, si padre_id equivale a 0 significa que es una categoria padre, mientras que si es igual a un numero distinto de 0 es asi porque pertenece a una categoria con padre_id = 0
Ok aquí la explicación de por que esta mal (la parte en negritas).

Primero algunas propiedades:
Una categoría padre es cualquier categoría que tenga hijos.
Una categoría terminal es cualquier categoría que no tenga hijos.
Una categoría raíz es cualquier categoría que no tenga ID padre.
Una categoría padre es mutuamente excluyente de una categoría terminal.
Pero no son mutuamente excluyentes con una categoría raíz.

Explicación:
Una categoría (y en general cualquier registro) no se puede referenciar a menos que haya sido creado primero. ¿Como intentas refenciar al misma categoría si no ha sido creado en primera instancia?
  #4 (permalink)  
Antiguo 30/09/2012, 13:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Referencia a la "clave unica" en el mismo modelo.

ok ! muchas gracias !

Etiquetas: clave, django, referencia, unica
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.