Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

220
Vistas
No se permiten varias claves principales para la tabla "app_employee".

Django 1.11 con PostgreSQL.

Voy a migrar mi sitio y models.py arroja el error de que no puedo tener más de una clave principal. No puedo ver dónde lo hago (o no entiendo cómo).

 class Employee(models.Model): Aegis_ID = models.UUIDField(primary_key=True, null=False, default=uuid.uuid4, editable=False, serialize=True) Employee_Number = models.ForeignKey('self', on_delete=models.CASCADE, related_name='Company_Employee_Number', null=True, blank=True, max_length=6, help_text="Employee ID") Employee_FName = models.CharField(null=True, blank=True, max_length=25, help_text="First Name") Employee_LName = models.CharField(null=True, blank=True, max_length=25, help_text="Last Name") Employee_Email = models.EmailField(max_length=80, blank=True, help_text="GPM Email address") Employee_Position = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='Department_Employee_Position', max_length=3, choices=EMPLOYEE_POSITION, help_text="Select position of this Employee.") Hire_Date = models.DateField(null=True, blank=True, help_text="Enter the employee hire date.") Employee_Division = models.CharField(max_length=2, null=True, blank=True, choices=DIVISION_CHOICES, help_text="Assign the Audit Division for this employee.") Employee_Region = models.CharField(max_length=3, null=True, blank=True, choices=REGION_CHOICES, help_text="Assign the Audit Region for this employee.") Employee_District = models.CharField(max_length=3, null=True, blank=True, choices=DISTRICT_CHOICES, help_text="Assign the Audit District for this Employee.")

Al leer las páginas de Django sobre este tema exacto, aparece como un problema resuelto en 1.7 y tiene que ver con cómo Django ordenaba las tablas por clase, alfabéticamente.

También probé python manage.py flush seguido de makemigrations antes de migrate

Entonces, ¿qué campos está Django / Postgres intentando hacer una "id" y "primary" porque simplemente no entiendo, aquí ...

De acuerdo con la documentación de Django con respecto a las claves primarias automáticas, existe lo que no se ve es id = models.AutoField(primary_key=True) pero también entendí que si asignas primary_key=True a un campo, esto no se aplica

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En su modelo anterior, no se permiten claves primarias múltiples para la tabla "app_employee".

No viene porque tienes

 Aegis_ID = models.UUIDField(primary_key=True, null=False, default=uuid.uuid4, editable=False, serialize=True)

Porque en la documentación de Django se especifica claramente que

Documentación de Django

Field.primary_key Si es True, este campo es la clave principal del modelo.

Si no especificas primary_key=True para ningún campo en tu modelo, Django agregará automáticamente un AutoField para contener la clave principal, por lo que no necesitas establecer primary_key=True en ninguno de tus campos a menos que quieras anular el Comportamiento predeterminado de clave principal.

primary_key=Verdadero implica nulo=Falso y único=Verdadero. Solo se permite una clave principal en un objeto.

He probado su modelo en mi proyecto y está funcionando absolutamente bien. Por simplicidad eliminé otros campos.

modelos.py

 from __future__ import unicode_literals from django.db import models import uuid class Employee(models.Model): Aegis_ID = models.UUIDField(primary_key=True, null=False,default=uuid.uuid4, editable=False, serialize=True) Employee_Number = models.ForeignKey('self', on_delete=models.CASCADE, related_name='Company_Employee_Number', null=True, blank=True, max_length=6, help_text="Employee ID") Employee_FName = models.CharField(null=True, blank=True, max_length=25, help_text="First Name") Employee_LName = models.CharField(null=True, blank=True, max_length=25, help_text="Last Name") Employee_Email = models.EmailField(max_length=80, blank=True, help_text="GPM Email address")

y cuando lo hice

 (venv) astikanand@Developer-PC:~/firstsite$ python manage.py makemigrations Migrations for 'employee': employee/migrations/0001_initial.py - Create model Employee

y entonces

 (venv) astikanand@Developer-PC:~/firstsite$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, employee, sessions Running migrations: Applying employee.0001_initial... OK

por lo que está funcionando bien .

lo que tienes que hacer es

Ya sea que vuelva a crear su aplicación o simplemente comience su proyecto de nuevo, puede haber algunos problemas de dependencia o algo así. Pero su código para el modelo Employee está bien.

about 4 years ago · Santiago Trujillo Denunciar

0

Es muy posible que haya cambiado las claves principales y/o las referencias a otros modelos/tablas y algunas dependencias heredadas permanecieron en los archivos de migración.

Consulte la documentación oficial de Django para revertir migraciones pasadas. No es necesario que reinicie su proyecto para eliminar las dependencias.

 python manage.py makemigrations --empty yourappname

Eso es. Luego verifique el archivo 0001_initial.py en la carpeta de migraciones en su aplicación para asegurarse de que se hayan eliminado todas las dependencias. Debería verse como:

 from django.db import migrations class Migration(migrations.Migration): dependencies = [ ('yourappname', '0001_initial'), ] operations = [ ]
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda