2010-02-16 193 views

Respuesta

31

Django no admite claves primarias compuestas. Puede crear una única clave compuesta única con Meta.unique_together.

+0

Gracias Ignacio! ¿Cómo hacer que esto funcione con la relación Muchos a Muchos? ¿Funcionará? – Viet

+1

Soy * realmente * curioso en cuanto a lo que usted cree que la conexión entre una clave única compuesta y una relación de muchos a muchos es ... –

+0

Digamos que tenemos 2 entidades: Estudiantes y Temas. Los estudiantes pueden tomar muchas materias. Una tabla de combinación con clave primaria compuesta: Tabla student_subjects: -------------------------------- student_id subject_id Es una técnica básica para crear relaciones n-to-n. – Viet

2

Una clave compuesta consta de más de un atributo para identificar de forma única una ocurrencia de entidad. Esto difiere de una clave compuesta en que uno o más de los atributos, que constituyen la clave, no son simples claves por derecho propio.

Por ejemplo, tiene una base de datos que contiene su colección de CD. Una de las entidades se llama pistas, que contiene detalles de las pistas en un CD. Esto tiene una clave compuesta de nombre de CD, número de pista.

4

si quieres campos mixtos única únicas juntas utilizar belowcode:

class MyTable(models.Model): 
    class Meta: 
     unique_together = (('key1', 'key2'),) 

    key1 = models.IntegerField() 
    key2 = models.IntegerField() 

Pero si quieres única juntos y uno de la columna no sea primaria, establecer primary argumento a favor de la columna modelo, similar abajo código:

class MyTable(models.Model): 
    class Meta: 
     unique_together = (('key1', 'key2'),) 

    key1 = models.IntegerField(primary_key=True) 
    key2 = models.IntegerField() 
Cuestiones relacionadas