Tôi cần mở rộng người dùng django bằng một số trường bổ sung. Tôi tìm thấy 2 cách khác nhau cóTrường Ngoại khóa so với trường OneToOne django
class UserProfile(models.Model):
user = models.OneToOneField(User)
#other fields
HOẶC
class UserProfile(models.Model):
user = models.ForeignKey(User)
#other fields
Chẳng phải họ giống nhau không? Sau khi đồng bộ hóa chúng, tôi thấy không có sự khác biệt trong cơ sở dữ liệu mysql
Sau khi đồng bộ hóa, tôi thấy không có sự khác biệt trong cơ sở dữ liệu mysql, tôi đã hỏi cách phân biệt – sumit
Sự khác biệt duy nhất * trong cơ sở dữ liệu * là một ràng buộc duy nhất trên cột với một-một. Thực tế, 'OneToOneField' chỉ đơn thuần là 'ForeignKey (unique = True)'. –
Bạn sẽ không thấy bất kỳ sự khác biệt nào trong cơ sở dữ liệu của mình, vì syncdb không thay đổi bảng khi chúng được xác định, bạn sẽ cần phải thả và tạo lại chúng. Tuy nhiên, bạn có thể sử dụng 'sqlall' để hiển thị các kết quả đầu ra khác nhau - như Chris nói, OneToOne có một ràng buộc duy nhất. –