Python - Primary Key compuesta Django PostgreSQL

 
Vista:
Imágen de perfil de Patricio
Val: 209
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Primary Key compuesta Django PostgreSQL

Publicado por Patricio (42 intervenciones) el 12/09/2020 08:21:17
Hola a Todos...!!!

Necesito crear una clave compuesta en el models.py ....
Algo así como lo siguiente

1
2
3
4
class X(models.Model):
    campo1 = models.CharField(max_length=10, primary_key=True)
    campo2 = models.CharField(max_length=10, primary_key=True)
    campo3 = models.CharField(max_length=50)

Al tratar de hacerlo me arroja un error....

Se puede hacer esto...???

Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Primary Key compuesta Django PostgreSQL

Publicado por Jaime (136 intervenciones) el 13/09/2020 01:36:16
En teoría de base de datos dicta que no se permite que existan 2 primary key dentro de una tabla.
Puedes crear un campo como primary key y el otro como UNIQUE
Si realmente necesitas eso, quiere decir que está mal diseñada la base de datos y necesita reestructurarse.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Primary Key compuesta Django PostgreSQL

Publicado por Jaime (136 intervenciones) el 13/09/2020 08:38:10
Nunca dije que no fuera posible, muy bien por investigar!
Dije que no se debe hacer porque es mala práctica y porque la norma de normalización dicta eso como estandar.
La opción que tienes es crear una PRIMARY KEY y una UNIQUE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Patricio
Val: 209
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Primary Key compuesta Django PostgreSQL

Publicado por Patricio (42 intervenciones) el 13/09/2020 03:38:50
Por lo demás no son "dos primary key", es una primary key compuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Patricio
Val: 209
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Primary Key compuesta Django PostgreSQL

Publicado por Patricio (42 intervenciones) el 15/09/2020 04:10:51
Unfortunately django does not yet have a composite primary key (composite primary keys are also called multi column primary keys)

There is a third party library, unsurprisingly named django-compositekey that makes it possible to create a model that has a multi column primary key. However that project is not maintained and not compatible with the latest versions of django.

Your best bet, is to add a new column into your table which is a an AutoField and make it the new primary key. The fields that make up the primary key at present can then be marked as unique_together. While this may not be ideally for a few queries. It's good enough for most.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar