Джанго не видит таблицу в родовом отношении

Я работаю с Django 1.7.2 с общим отношением (причина: у проекта есть две базы данных), и после импорта я не хочу перезаписывать базу данных.

Я хочу показать только активный сезон

Вот моя модель, после импорта перезаписывается:

class Season(models.Model):
    name = models.CharField('Name', max_length=255)
    start = models.DateField('Start')
    end = models.DateField('End')

    def __unicode__(self):
        return self.name

В другом месте в файле models.py я создаю общее отношение к другой модели (SaleAndCycle) в другой базе данных:

def extend_models(sender, **kwargs):
    if sender._meta.app_label != 'extend':
        return
    def set_stati(self, database='extend', save=True):
        online_before = self.online
        self.online = True
        for flag in self.flags:
            if flag.flag == 'offline':
                self.online = False
        if save and self.online != online_before:
            self.save(using=database)

    for name, name_singular, name_plural in (
        ('Season', 'Season', 'Seasons'):
        if sender.__name__ == name:
            sender._meta.verbose_name = name_singular
            sender._meta.verbose_name_plural = name_plural
    if sender.__name__ == 'Season':
        sender.add_to_class('sale_and_cycles', generic.GenericRelation(SaleAndCycle))
        sender.add_to_class('is_sale_active', property(
            lambda o: o.sale_and_cycles.using('default')))
        sender.add_to_class('is_cyclic_event_active', property(
            lambda o: o.sale_and_cycles.using('default')))
        sender.add_to_class('cycle_link', property(
            lambda o: o.sale_and_cycles.using('default')))

Я хочу показать все активные сезоны для не авторизованного пользователя:

def get_queryset(self):
    seasons = Season.objects.all()
    if not self.request.user.is_superuser:
        all_seasons = Season.objects.filter(events_isactiveflags__is_active=True)
        print all_seasons

Я получаю ошибку:

no such table: events_isactiveflag

Но эта таблица существует в моей базе данных.

2 ответа

По строке кода

Season.objects.filter(events_isactiveflags__is_active=True)

Вот events_isactiveflags__is_active=True означает, что events_isactiveflags является таблицей, а is_active является столбцом таблицы. Таким образом, не найдена такая таблица с именем events_isactiveflags. если вы пытаетесь получить активные сеансы, вы можете попробовать этот код

Session.objects.filter(expire_date__gte=timezone.now())

Удалите db и еще раз запустите syncdb

Другие вопросы по тегам