2015-02-14 14 views

Trả lời

18

Bạn có thể tạo mô hình không có phím tăng tự động, nhưng bạn không thể tạo mô hình không có khóa chính.

Từ Django Documentation:

Nếu Django thấy bạn đã thiết lập một cách rõ ràng Field.primary_key, nó sẽ không thêm cột id tự động.

Mỗi mô hình yêu cầu chính xác một trường để có primary_key=True (được khai báo một cách rõ ràng hoặc tự động thêm).

6

Không, bạn không thể. Trích từ documentation:

Mỗi mô hình yêu cầu chính xác một trường để có primary_key = True (được khai báo rõ ràng hoặc tự động thêm).

4

Tôi đã tìm ra giải pháp.

Vì django cần khóa chính (hoặc là ID trường đơn hoặc tổng hợp) nên tôi đã cố gắng đặt primary_key = True trong mọi trường trong tổ hợp phím tổng hợp và thêm các trường đó trong Meta và nhóm trong unique_together

class ReportPvUv(models.Model): 
    report_id = models.ForeignKey(Reports, primary_key=True) 
    rdate = models.DateField(primary_key=True) 
    fdate = models.DateTimeField(primary_key=True) 
    ga_pv = models.BigIntegerField() 
    ga_uv = models.BigIntegerField() 
    ur_pv = models.BigIntegerField() 
    ur_uv = models.BigIntegerField() 
    da_pv = models.BigIntegerField() 
    da_uv = models.BigIntegerField() 

    class Meta: 
     db_table = 'report_pv_uv' 
     unique_together = ('report_id', 'rdate', 'fdate') 

và khi tôi chạy makemigrations, không có trường ID trong cuộc di cư kịch bản của nó: D

nhờ tất cả mọi người

+0

Ồ không !!. Bạn không thể đặt nhiều khóa chính. Bạn cần đặt nó là 'unique = True' và chỉ có một khóa chính – karthikr

+1

Nhiều khóa chính cột được ** không ** hỗ trợ bởi Django. Có nhiều vấn đề với cách tiếp cận này. Xem https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys – Selcuk

+0

ok, tốt. Tôi đã thay đổi nó thành duy nhất = True – HQM

Các vấn đề liên quan