Я хочу иметь возможность получить список всех кошельков в моем приложении - но каждый кошелек должен быть указан как UserWallet, TeamWallet, CarWallet и так далее.Не должно быть общих экземпляров кошелька.Я все еще хочу иметь возможность устанавливать внешние ключи в других моделях (например, модель оплаты) для общей модели кошелька или ссылаться на кошелек без использования одного внешнего ключа для каждой дочерней модели.
Я вижу эти преимущества для наследования универсального класса:
- Я могу получить список всех кошельков
- Я могу установить внешние ключи для модели родительского кошелька
Недостатки наследования универсального класса:
- Не удается запретить создание наследования универсального кошелька.
- Более медленная причина JOIN в базе данных
- Непонятная структура БД
Я вижу следующие преимущества использования абстрактного класса наследования:
- Нет общих экземпляров кошелька.
- Простая структура таблицы базы данных.
Недостатки наследования абстрактного класса:
- Мне нужно использовать itertools или другие хаки, чтобы получить список всех кошельков.
- Мне нужноустановить один внешний ключ для каждой дочерней модели во внешних моделях или использовать медленные ключи типа контента.
Поскольку я довольно новичок в разработке на Python и Django, я думаю, что упускаю довольно много моментов.Как вы решаете эти ситуации?
Пример структуры макета:
class Wallet(models.Model):
status = models.CharField(max_length=10)
is_default = models.NullBooleanField()
class UserWallet(Wallet):
user = models.ForeignKey(User, on_delete=models.CASCADE)
class TeamWallet(Wallet):
team = models.ForeignKey(Team, on_delete=models.CASCADE)
class Payment(models.Model):
wallet = models.ForeignKey(Wallet, on_delete=models.CASCADE)
Спасибо за вашу помощь и любые мысли.