PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Plusieurs clés primaires pour la table app_employee ne sont pas autorisées.

Dans votre modèle ci-dessus, Plusieurs clés primaires pour la table "app_employee" ne sont pas autorisées.

Cela ne vient pas parce que vous avez

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

Car dans la documentation de django il est bien précisé que

Field.primary_keySi True, ce champ est la clé primaire du modèle.

Si vous ne spécifiez primary_key=True pour aucun champ de votre modèle, Django ajoutera automatiquement un AutoField pour contenir la clé primaire, vous n'avez donc pas besoin de définir primary_key=True sur aucun de vos champs, sauf si vous souhaitez remplacer le comportement par défaut de la clé primaire.

primary_key=True implique null=False et unique=True. Une seule clé primaire est autorisée sur un objet.

J'ai essayé votre modèle sur mon projet et il fonctionne parfaitement. Pour plus de simplicité, j'ai supprimé d'autres champs

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")

et quand je l'ai fait

(venv) [email protected]:~/firstsite$ python manage.py makemigrations
Migrations for 'employee':
employee/migrations/0001_initial.py
- Create model Employee

puis

(venv) [email protected]:~/firstsite$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, employee, sessions
Running migrations:
Applying employee.0001_initial... OK

donc ça fonctionne bien .

Soit vous recréez votre application, soit vous recommencez simplement votre projet, il peut y avoir des problèmes de dépendance ou quelque chose du genre. Mais votre code pour le modèle Employee est correct.