PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Nhiều khóa chính cho bảng app_employee không được phép.

Trong mô hình ở trên của bạn, Nhiều khóa chính cho bảng “app_employee” không được phép.

không đến bởi vì bạn có

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

Bởi vì trong tài liệu django đã chỉ rõ rằng

Field.primary_keyNếu Đúng, trường này là khóa chính cho mô hình.

Nếu bạn không chỉ định primary_key =True cho bất kỳ trường nào trong mô hình của mình, Django sẽ tự động thêm Trường tự động để giữ khóa chính, vì vậy bạn không cần đặt primary_key =True trên bất kỳ trường nào trừ khi bạn muốn ghi đè hành vi khóa chính mặc định.

primary_key =True ngụ ý null =False và duy nhất =True. Chỉ một khóa chính được phép trên một đối tượng.

Tôi đã thử mô hình của bạn trong dự án của tôi và nó đang hoạt động hoàn toàn tốt. Để đơn giản hơn, tôi đã xóa các trường khác

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

và khi tôi đã làm

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

và sau đó

(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

vì vậy nó hoạt động tốt .

Hoặc bạn tạo lại ứng dụng của mình hoặc đơn giản là bắt đầu lại dự án của mình, có thể là một số vấn đề phụ thuộc hoặc điều gì đó. Nhưng mã của bạn cho nhân viên kiểu mẫu đều ổn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách lấy thông tin đầu vào của người dùng từ qdateEdit và chọn nó từ cơ sở dữ liệu trong postgres

  2. Tìm kiếm số điện thoại có chứa dấu trừ, như 123-456789

  3. Tôi có thể sử dụng giá trị trả về của INSERT ... RETURNING trong một INSERT khác không?

  4. LỖI PostgreSQL:INSERT có nhiều cột mục tiêu hơn các biểu thức, khi nó không

  5. Cách lấy ID trả về trong JPA sau khi chèn truy vấn gốc