Tôi phát triển một ứng dụng nhất định mà tôi đã tìm thấy với lược đồ mô hình và cơ sở dữ liệu được chỉ định. Tôi đang sử dụng phiên bản Django 1.8.2. Dưới đây là một vấn đề. Các trường không cần thiết đã được bỏ qua, tên mô hình được phát minh cho các mục đích của một ví dụ, bởi vì tôi không thể tiết lộ. Hãy xem xét các mô hình sau đây A và B.Cách tạo khóa chính bao gồm hai trường trong Django?
class B (models.Model):
name = models.CharField(max_length=100)
class A (models.Model):
name = models.CharField(max_length=100, primary_key=True)
related_name = models.ForeignKey(B, null=True, blank=True)
Sau một thời gian dài, dự án có thể có cùng tên A, nhưng với khóa ngoại khác nhau B. Trong trường hợp cụ thể này, tôi muốn mô hình khóa chính "A" bao gồm hai trường: tên và tên liên quan. Làm thế nào để tạo ra một chìa khóa bao gồm hai lĩnh vực trong django?
Có thể thay đổi khóa chính của 'A' thành mặc định django' id' thay thế không? Điều đó có vẻ như sự sửa chữa rõ ràng. –
Xin chào :-) Cảm ơn bạn đã trả lời. Đây là một giải pháp tốt, nhưng trong trường hợp của tôi nhiều bảng có bàn phím ngoài là "A" và thay đổi thành id mặc định sẽ là một nỗ lực thực sự lớn. Hơn nữa, rất nhiều mã bằng cách sử dụng các truy vấn như 'A.objects.get (pk = "something")' và thay đổi loại khóa chính đòi hỏi rất nhiều công việc. Vì lý do này, tôi đang tìm một giải pháp không thay đổi loại khóa. Các cơ sở có rất nhiều năm. –
Ok. Trong trường hợp đó tôi không nghĩ rằng điều này có thể được giải quyết trong django. Django yêu cầu một khóa chính duy nhất cho mỗi cá thể. Ngay cả khi bạn có thể sử dụng một khóa chính composite, tôi không chắc chắn nếu nó là một ý tưởng tốt khi một trong các lĩnh vực trong pk là một khóa ngoại nullable. –