Как смоделировать это в django (унаследованная модель, где каждая унаследованная модель имеет уникальный метод) - PullRequest
1 голос
/ 01 июля 2010

Как смоделировать это в django:

1) иметь базовую сеть производителей

2) в каждой сети их может быть несколько дистрибьюторов

3) пользовательсистемы могут получить доступ к элементам через дистрибьютора

4) если пользователь получает доступ к элементу через дистрибьютора, мы хотим, чтобы этот элемент был переведен, где каждый производитель будет иметь свой собственный перевод

class Manufacturer(models.Model):
    networkname = models.CharField(max_length=128)

    class Meta:
        proxy = True

class Distributor(models.Model):
    man = models.ForeignKey(Manufacturer)

class ManuType1(Manufacturer):
    def translate(self, str):
        return 'translate'

class ManuType2(Manufacturer):
    def translate(self, str):
        return 'translate'

В этом случае мы получим запрос для определенного дистрибьютора.Мы идентифицируем этого дистрибьютора и хотим, чтобы производители дистрибьютора перевели метод.Выглядит ли это как способ смоделировать это в django (я уверен, что есть много способов сделать это), поэтому любой ввод / обратная связь полезна.

Где я сталкиваюсь с проблемами (возможно, недостаточно хорошее знание Python) получает Дистрибьютор с ManuType1 Как мне вызвать функцию перевода во время выполнения?

Это, вероятно, хорошо изученный шаблон, использующий другие термины, но не уверен, как его выразить точно.

1 Ответ

0 голосов
/ 02 июля 2010

Если dist является экземпляром Дистрибьютора, вы можете сделать dist.man, чтобы получить экземпляр Изготовителя. Из-за того, как в Django работает наследование нескольких таблиц, вам необходимо получить доступ к OneToOneField, который существует у производителя, к экземпляру подкласса. Проблема заключается в том, чтобы выяснить, какой экземпляр подкласса существует. Это может быть сделано проще, если сохранить ContentType подкласса в экземпляре производителя .

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