Odpowiedź,:
- Abstrakcyjne: Gdy potrzebujesz wspólnych pól/metod dla różnych modeli.
- Wielokrotne abstrakcyjne: Gdy chcesz łączyć różne funkcjonalności.
- Konkretne/multi-table: Gdy potrzebujesz hierarchii z osobnymi tabelami.
- Proxy: Gdy chcesz zmienić zachowanie istniejącego modelu bez zmiany bazy danych.
# Dziedziczenie abstrakcyjne
class Person(models.Model):
# common fields
class Meta:
abstract = True
# Konkretne/multi-table::
class Student(models.Model):
# Student Attributes
pass
# Proxy Models:
class MyPerson(Person):
class Meta:
proxy = True
ordering = ["last_name"]
def do_something(self):
pass