2010-11-09 34 views
24

Tôi sẽ giới thiệu tóm tắt: để làm việc theo tinh thần và ý tưởng về ứng dụng Django, ứng dụng này có thể nhập mô hình từ bên trong ứng dụng khác không? Giả sử, ứng dụng Thống kê người dùng sẽ nhập mô hình từ ứng dụng Người dùng giống như: từ users.models người dùng nhậpChia sẻ các mô hình giữa các ứng dụng Django

+2

lưu ý rằng trong tên mô hình django nên là số ít. – Ski

Trả lời

15

Nếu bạn đang xây dựng một ứng dụng nội bộ không có cơ hội được phát hành ra công chúng, chắc chắn, hãy làm bất cứ điều gì bạn muốn.

Nếu bạn đang xây dựng một ứng dụng nội bộ có ít cơ hội được phát hành ra công chúng, nhưng chắc chắn sẽ được các nhà phát triển hiện tại sử dụng, nhưng hãy chắc chắn ghi lại những gì ứng dụng cần làm việc đúng cách.

Nếu bạn đang xây dựng một ứng dụng để phát hành công khai, hãy cố gắng giữ cho ứng dụng tự phụ thuộc (và phụ thuộc vào django-internals, tức là sử dụng những gì django cung cấp, khi có thể). Nếu bạn thực sự cần ứng dụng của bên thứ ba hoạt động hoặc nếu ứng dụng của bên thứ ba làm cho mã của bạn dễ quản lý hơn, thì chắc chắn, bao gồm các phụ thuộc, nhưng hãy chắc chắn gấp đôi tài liệu tất cả yêu cầu và thiết lập cần thiết.

Trong hầu hết các trường hợp, bạn có thể thực hiện hầu hết mọi thứ bạn muốn miễn là bạn có đủ tài liệu.

Tôi thực hiện, tuy nhiên, phải đặt câu hỏi về sự tỉnh táo khi tạo mô hình User của riêng bạn có cùng tên với nội dung dựng sẵn của django auth.User.

+2

Nó không chỉ là cùng tên, đó là cùng một lớp mô hình chính xác. –

+0

Các ứng dụng thống kê người dùng và người dùng chỉ vì lợi ích của ví dụ, bởi vì trường hợp của tôi không phải là dễ hiểu. Điều này đã trả lời câu hỏi của tôi, cảm ơn bạn! –

-1

Không làm điều này. Họ sẽ có cùng tên ứng dụng và ORM sẽ bị nhầm lẫn. Sử dụng một mô hình trừu tượng thay vào đó, và có cả hai bắt nguồn từ nó.

+2

Bạn không hiểu lầm những gì OP đang yêu cầu? Anh ấy không nói gì về việc xác định các mô hình giống hệt nhau trong các ứng dụng khác nhau, anh ấy đang nói về việc nhập lớp Người dùng vào ứng dụng của mình để anh ấy có thể lấy dữ liệu từ nó, chắc chắn? IOW, câu trả lời cho câu hỏi này là "Có, tất nhiên bạn có thể." –

+0

@Daniel: Có thể là trường hợp như vậy. Nếu OP làm rõ những gì anh ta đang tìm kiếm thì tôi sẽ sửa lại. –

+1

Bạn nên xem xét sửa đổi nó vì bạn đã sai rõ ràng về cách giải thích của bạn – Sensei

1

Bạn thử kẹo tốt hơn extending the Django User model with inheritance. Bạn sẽ sử dụng người dùng django với trường tùy chỉnh được thêm vào, vì vậy bạn sẽ có cùng một người dùng cho tất cả các ứng dụng.

+2

Tôi đã nhìn thấy một số người trên IRC (freenode # django) trong quá khứ đã gặp sự cố sau khi gặp sự cố khi cố gắng phân lớp 'auth.User'. Nói chung, đó là một trong những điều bạn nên tránh xa trừ khi bạn biết bạn cần nó. Ngoài ra, [hồ sơ người dùng] (http://docs.djangoproject.com/en/1.2/topics/auth/#storing-additional-information-about-users) là phương pháp được ưa thích chung để lưu trữ thông tin bổ sung về Người dùng. – eternicode

25

Câu trả lời là có. Nó hoàn toàn ổn cho một ứng dụng bên trong dự án django của bạn để nhập các mô hình từ một ứng dụng khác. Sức mạnh của một dự án django nằm trong các ứng dụng và tương tác của chúng.

Cũng đảm bảo rằng bạn có ứng dụng tiện ích nhập các mô hình từ các ứng dụng chung chung hơn chứ không phải theo cách khác. Ứng dụng "userstatistics" sẽ nhập các mô hình từ ứng dụng "người dùng" nhưng ứng dụng "người dùng" không nên dựa vào "userstatistics".

Nếu ứng dụng của bạn đang nhập mô hình từ ứng dụng của bên thứ 3 (cho phép nói django-piston), hãy chắc chắn chỉ định rằng trong tệp yêu cầu.

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