Мультитенантная архитектура Django - должны ли все модели иметь ссылку на tennant_id - PullRequest
0 голосов
/ 05 марта 2010

Допустим, что учетные записи в моем SAAS имеют тип Account(models.Model). Было бы неплохо следующее?

class MyModel(models.Model):
    account = models.ForeignKey(Account)
    spam = models.CharField(max_length=255)

class MyOtherModel(models.Model):
    # The next attribute `account` is the line in question.
    # Should it be included even though mymodel.account can get the same value?
    # The architecture could change later, and I might regret not including it,
    # but I can't think of many reasons why, other than filtering a list out of
    # this model like MyOtherModel.objects.filter(account=some_account).all()
    # Are there other considerations?
    account = models.ForeignKey(Account)
    mymodel = models.ForeignKey(MyModel)
    eggs = models.CharField(max_length=255)

1 Ответ

1 голос
/ 05 марта 2010

Если бы вы не использовали это сейчас, я бы оставил это. Код, что вам нужно сейчас, рефакторинг при необходимости позже. Есть несколько инструментов, которые делают изменения схемы более безболезненными. Юг является отличным примером - хорошо работает во многих ситуациях, продолжает развиваться и имеет большую поддержку сообщества. django-evolution - это еще один вариант, который существует уже давно, его разработка прекратилась, но он предлагает подход, который некоторые люди все еще предпочитают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...