为相互关联的模型管理Django应用程序

时间:2016-06-19 09:40:47

标签: django django-apps

对于Django来说,最佳做法显然是让1个应用程序只做一件事并做一件事......所以他们可以“插入并播放”到其他项目

考虑我有一个库应用程序,有3个应用程序。 bookmemberloan。他们每个人都有自己的模特。

所以,在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')
        )

我的问题是:

  1. 上述from book.models ...是否违反了即插即用的功能?
  2. 有更好的方法导入这些模型吗?这样做是否违反了最佳做法?

1 个答案:

答案 0 :(得分:0)

对于“一个应用程序做一件事,一件事做对”并不意味着它必须只有一个模型。如果您正在编写图书馆应用程序,那么它应该在同一个应用程序中拥有bookmemberloan模型。

然而,在您提出问题的上下文中,在应用程序B中使用应用程序A中的模型的一种可能做法是将模型定义为应用程序B中的可插入设置。例如,查看auth模块是什么在这里做:https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#substituting-a-custom-user-model