sql >> Databáze >  >> RDS >> PostgreSQL

Více primárních klíčů pro tabulku app_employee není povoleno.

Ve vašem výše uvedeném modelu Více primárních klíčů pro tabulku „app_employee“ není povoleno.

Nepřichází protože máte

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

Protože v dokumentaci django je jasně uvedeno, že

Field.primary_keyPokud je pravda, toto pole je primární klíč pro model.

Pokud pro žádné pole ve vašem modelu neurčíte primary_key=True, Django automaticky přidá AutoField pro uložení primárního klíče, takže nemusíte u žádného z vašich polí nastavovat primary_key=True, pokud nechcete přepsat výchozí chování primárního klíče.

primary_key=True znamená null=Nepravda a jedinečný=True. U objektu je povolen pouze jeden primární klíč.

Vyzkoušel jsem váš model na svém projektu a funguje naprosto v pořádku. Pro jednoduchost jsem odstranil další pole

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 když jsem to udělal

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

a poté

(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

takže to funguje dobře .

Buď znovu vytvoříte svou aplikaci, nebo jednoduše spustíte projekt úplně znovu, mohou to být nějaké problémy se závislostí nebo tak něco. Ale váš kód pro model Employee je v pořádku.



  1. ID nemůže být null (automatické zvýšení)

  2. Jak používat DELETE ON CASCADE ve vztahu mnoho ku jedné

  3. Existuje rozdíl ve výkonu mezi concat vs || v orákulu

  4. Výjimka C# SqlConnection:Klíčové slovo není podporováno 'Port'