У вас есть две опции, и разница между ними заключается в создании таблиц в БД:
1. Чтобы создать «абстрактный базовый класс» из этих двух классов
Предоставляя мета-опцию abstract=True
в классе Model, вы можете создать абстрактный базовый класс Models.
class AbstractModel(models.Model):
to = ...
from = ...
price = ...
some_charge = ...
other_charge = ...
class Meta:
abstract = True
class Quotation(AbstractModel):
pass
class Booking(AbstractModel):
name = ...
Абстрактные базовые классы не создают таблицы в вашей базе данных. Вы можете просто наследовать этот класс как любые обычные классы Python. Поэтому вы можете создать два класса Quotation
и Booking
, которые наследуют AbstractModel
.
Если у вас есть возможность добавить больше классов в будущем, я рекомендую этот метод, потому что он более расширяемый.
2. Наследовать напрямую
Код проще, но вы должны знать, что если какой-то класс наследует другой класс, который не является абстрактным базовым классом, то будут созданы таблицы для обоих классов. в вашей базе данных.
class Quotation(models.Model):
to = ...
from = ...
price = ...
some_charge = ...
other_charge = ...
class Booking(Quotation):
name = ...
Но, как вы видите, это жестко запрограммировано, поэтому убедитесь, что эта структура наследования будет использоваться только один раз.
И вы можете обратиться к официальномудокумент Джанго. https://docs.djangoproject.com/en/2.1/topics/db/models/#model-inheritance