Наследование моделей в django: получение объектов OneToMany из родительского класса - PullRequest
0 голосов
/ 07 февраля 2012

Вот структура модели: Клиент - Пользователь, Клиент может быть корпоративным или физическим лицом:

class Client(User):
    #fields

class ClientCorporate(Client):
    #fields


class ClientPerson(Client):
    #fields

И клиент может делать заказы:

class Order(models.Model):
    client=models.ForeignKey(Client)
    #fields

Я пытаюсь создать общий список заказовдля любого типа клиента вот представление:

def orders_list(request):
    client=request.user.client
    return list_detail.object_list(request,
        queryset = client.order_set.all(),
        #templates ...
        )

И это приводит к ошибке:

DatabaseError при рендеринге: такого столбца нет: cabinets_order.client_id

Я просматриваю базу данных и нахожу, что у всех дочерних элементов пользователя есть столбец "user_prt_id".Итак, как лучше всего заставить это работать в Django?Создать собственный менеджер или изменить модели соответствующим образом?...

1 Ответ

0 голосов
/ 07 февраля 2012

Эта ошибка означает, что в вашей таблице cabinets_order нет столбца базы данных client_id.

Убедитесь, что вы python manage.py syncdb. Если вы добавили внешний ключ после syncdb один раз, вам придется сбросить его или добавить внешний ключ вручную. Вы можете сгенерировать необходимый SQL, запустив python manage.py sqlall cabinets и выбрав биты генерации ForeignKey

Если вы можете потерять свои текущие данные (если в разработке), просто запустите python manage.py reset cabinets

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