PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Mehrere Primärschlüssel für die Tabelle app_employee sind nicht zulässig.

In Ihrem obigen Modell sind mehrere Primärschlüssel für die Tabelle „app_employee“ nicht zulässig.

Es kommt nicht denn du hast

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

Weil in der Django-Dokumentation klar angegeben ist, dass

Field.primary_keyWenn True, ist dieses Feld der Primärschlüssel für das Modell.

Wenn Sie für kein Feld in Ihrem Modell primary_key=True angeben, fügt Django automatisch ein AutoField hinzu, das den Primärschlüssel enthält, sodass Sie primary_key=True für keines Ihrer Felder festlegen müssen, es sei denn, Sie möchten die überschreiben Standardverhalten des Primärschlüssels.

primary_key=True impliziert null=False und unique=True. Für ein Objekt ist nur ein Primärschlüssel zulässig.

Ich habe Ihr Modell in meinem Projekt ausprobiert und es funktioniert absolut einwandfrei. Der Einfachheit halber habe ich andere Felder entfernt

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

und wann ich es getan habe

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

und dann

(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

es funktioniert also gut .

Entweder Sie erstellen Ihre App neu oder starten Ihr Projekt einfach von vorne, möglicherweise gibt es einige Abhängigkeitsprobleme oder ähnliches. Aber Ihr Code für das Modell Employee ist in Ordnung.