Можно ли определить виды и шаблоны для абстрактных моделей, которые будут использоваться для реальных моделей? - PullRequest
0 голосов
/ 07 января 2019

Допустим, у меня есть приложение myapp django, и мне нужно определить две конкретные модели, связанные с контактами, например,

  • myapp.PersonContact
  • myapp.CompanyContact

Несколько очевидная вещь, которую нужно сделать, - это создать новое приложение contacts и определить абстрактную модель contacts.Contact, которая затем может быть повторно использована в myapp.models, например ::

# contacts/models.py
from django.db import models

class Contact(models.Model):
    name = models.CharField(max_length=80)
    ...

    class Meta:
        abstract = True


# myapp/models.py
from contacts.models import Contact

class PersonContact(Contact):
    person = ...

class CompanyContact(Contact):
    company = ...

Моя цель - абстрагировать как можно больше логики для приложения contacts, но единственное, что приходит на ум, - это определить абстрактный класс contacts.Contact и использовать его, чтобы мне не пришлось переопределять то же самое поля в myapp.PersonContact и myapp.CompanyContact.

Можно каким-то образом определить contacts.Contact связанные представления и / или шаблоны в приложении contacts, чтобы мне не приходилось создавать почти идентичные представления и шаблоны CRUD для обоих типов PersonContact и CompanyContact

...