2011-10-26 30 views
6

Tôi tự hỏi suy nghĩ của mọi người về việc tham gia trực tiếp mô hình với đối tượng auth.User so với mô hình hồ sơ của người dùng.Tôi có nên dùng ForeignKey cho người dùng Django hoặc mô hình tiểu sử không?

Tôi đang lưu trữ một số loại mô hình khác nhau mà người dùng của tôi đang thêm vào ứng dụng của tôi. Người dùng ứng dụng sẽ tìm kiếm người dùng khác thông qua tiêu chí trên các mô hình này.

Một mặt, tôi nghĩ rằng nếu tôi tham gia thẳng vào Người dùng thì tôi sẽ không cần phải thực hiện request.user.get_profile() mỗi khi tôi cần lấy hồ sơ của Người dùng và không giả sử rằng một người dùng luôn có một hồ sơ (họ làm trong ứng dụng của tôi tại mo, nhưng vẫn còn). Điều này để mô hình hồ sơ chỉ chứa các chi tiết liên lạc của người dùng.

Mặt khác, tôi cho rằng tôi rất có thể sẽ cần các giá trị từ Cấu hình (ví dụ: tên, vị trí) khi tôi tìm kiếm các mô hình khác này.

Không nghi ngờ gì sẽ hoạt động, vì vậy có thể không quan trọng, nhưng tôi chỉ tự hỏi suy nghĩ của người khác là gì.

Cảm ơn!

Ludo.

Trả lời

1

Nói chung: Nếu bạn muốn làm cho ứng dụng của mình có thể sử dụng lại, hãy luôn tạo khóa ngoài cho Mô hình người dùng.

Như bạn đã nói, trong hầu hết các trường hợp, bạn sẽ cần người dùng cũng như hồ sơ cá nhân, do đó, để ngăn chặn nhiều truy vấn cơ sở dữ liệu, hãy sử dụng bộ nhớ cache.

Nếu khả năng sử dụng lại không có liên quan, hãy tạo khóa ngoài cho Cấu hình và sử dụng select_related() để lấy cá thể Người dùng với truy vấn đơn lẻ.

2

Tôi cũng khuyên bạn nên tạo khóa ngoài cho Mô hình người dùng. Nó chỉ làm cho cuộc sống của bạn đơn giản hơn khi làm việc với đối tượng người dùng trong chế độ xem, cho một đối tượng. Vì vậy, bạn có thể làm những việc như request.user.foo_set, v.v. mà không cần phải trải qua mô hình hồ sơ.

+0

Tôi không cân nhắc điều đó. Lời khuyên âm thanh. – sleblanc

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