Джанго: Как можно организовать этот большой беспорядок моделей / менеджеров / дизайнеров?

Подводя итог, прежде чем я приведу к плохим примерам, и др: я пытаюсь создать приложение, в котором мне не нужно писать код во всех моих моделях, чтобы ограничить выбор текущей зарегистрированной учетной записью (я не использую Auth, или встроенные функции для учетной записи или входа).

то есть яне хочу сделать что-то вроде этого:

class Ticket(models.Model):
        account = models.ForeignKey(Account)
        client = models.ForeignKey(Client)  # A client will be owned by one account.
        content = models.CharField(max_length=255)

class TicketForm(forms.ModelForm):
        class Meta:
                model = Ticket
                exclude = ('account',)  #First sign of bad design?

        def __init__(self, *args, **kwargs):
                super(OrderForm, self).__init__(*args, **kwargs)
                if self.initial.get('account'):
                        # Here's where it gets ugly IMHO. This seems almost
                        # as bad as hard coding data. It's not DRY either.
                        self.fields['client'].queryset = Client.objects.filter(account=self.initial.get('account'))

Моя идея состоит в том, чтобы создатьAccount(models.Model) модель со следующим настраиваемым менеджером и подкласс его, используя многостоловое наследование со всеми моими моделями. Это дает мне огромную головную боль. Буду ли я все еще нуженaccount внешний ключ на каждую модель? Могу ли я получить доступ к учетной записи родительского класса для определенного экземпляра модели?

class TicketManager(models.Manager):
    def get_query_set(self):
        return super(TicketManager, self).get_query_set().filter(account=Account.objects.get(id=1))
        # Obviously I don't want to hard code the account like this.
        # I want to do something like this:
        # return super(ProductManager, self).get_query_set().filter(account=self.account)
        # Self being the current model that's using this manager
        # (obviously this is wrong because you're not inside a model
        # instance , but this is where the confusion comes in for me.
        # How would I do this?).

Пожалуйста, игнорируйте любые ошибки синтаксиса. Я напечатал все это здесь.

Вот откуда у меня появилась идея сделать это:Проект пространства имен Django

Ответы на вопрос(3)

Ваш ответ на вопрос