PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wiele kluczy podstawowych dla tabeli app_employee jest niedozwolonych.

W powyższym modelu wiele kluczy podstawowych dla tabeli „app_employee” jest niedozwolone.

nie nadchodzi ponieważ masz

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

Ponieważ w dokumentacji django jest jasno określone, że

Field.primary_keyJeśli True, to pole jest kluczem podstawowym modelu.

Jeśli nie określisz primary_key=True dla żadnego pola w Twoim modelu, Django automatycznie doda AutoField do przechowywania klucza podstawowego, więc nie musisz ustawiać primary_key=True na żadnym z pól, chyba że chcesz zastąpić domyślne zachowanie klucza podstawowego.

primary_key=True oznacza null=False i unique=True. W obiekcie dozwolony jest tylko jeden klucz podstawowy.

Wypróbowałem Twój model w moim projekcie i działa absolutnie dobrze.Dla uproszczenia usunąłem inne pola

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

a kiedy to zrobiłem

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

a następnie

(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

więc działa dobrze .

Albo odtwarzasz swoją aplikację, albo po prostu zaczynasz projekt od nowa, może to być jakieś problemy z zależnościami lub coś takiego. Ale twój kod dla modelu Employee jest w porządku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dodać nową kolumnę w tabeli po 2 lub 3 kolumnie w tabeli za pomocą postgresa?

  2. Obsługa wyjątku BatchUpdateException przy użyciu withBatch

  3. Ogranicz relację klucza obcego do wierszy powiązanych podtypów

  4. Postgres - CREATE TABLE FROM SELECT

  5. Postgres:uzyskaj min, max, zagregowane wartości w jednym wyborze