对于Django来说,最佳做法显然是让1个应用程序只做一件事并做一件事......所以他们可以“插入并播放”到其他项目
考虑我有一个库应用程序,有3个应用程序。 book
,member
和loan
。他们每个人都有自己的模特。
所以,在forms.py
中说loan
,我需要做这样的事情:
from book.models import Book
from member.models import Model
from .models import Loan
#Other key imports
class CreateLoanForm(forms.Form):
# Some fields
def save(self):
# Retrieve fields
selected_book = self.cleaned_data.get('selected_book')
selected_member = self.cleaned_data.get('selected_member')
new_loan = Loan(
book=Book.objects.get(id=selected_book),
member=Member.objects.get(id=selected_member),
date_start=self.cleaned_data.get('date_start'),
date_end=self.cleaned_data.get('date_end')
)
我的问题是:
from book.models ...
是否违反了即插即用的功能?答案 0 :(得分:0)
对于“一个应用程序做一件事,一件事做对”并不意味着它必须只有一个模型。如果您正在编写图书馆应用程序,那么它应该在同一个应用程序中拥有book
,member
和loan
模型。
然而,在您提出问题的上下文中,在应用程序B中使用应用程序A中的模型的一种可能做法是将模型定义为应用程序B中的可插入设置。例如,查看auth
模块是什么在这里做:https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#substituting-a-custom-user-model