简体   繁体   English

Django看不到通用关系表

[英]Django not see the table in generic relation

I'm working with Django 1.7.2 with generic relation (reason: project has two databases), and after import I don't want to have overwritten database. 我正在使用具有通用关系的Django 1.7.2(原因:项目有两个数据库),并且在导入后我不想覆盖数据库。

I want to show only active season 我只想显示活跃的季节

Here is my model, is overwritten after import: 这是我的模型,导入后被覆盖:

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

In another place in models.py file I create Generic relation to another model (SaleAndCycle) in another database: 在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')))

I want to show all active Seasons for not login user: 我想显示所有未登录用户的活动季节:

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

I get error: 我得到错误:

no such table: events_isactiveflag

But this table exists in my database. 但是该表存在于我的数据库中。

by the line of code 通过代码行

Season.objects.filter(events_isactiveflags__is_active=True)

here events_isactiveflags__is_active=True means events_isactiveflags is a table and is_active is a column of the table. 这里events_isactiveflags__is_active=True表示events_isactiveflags是表,而is_active是表的列。 So no such table found named events_isactiveflags . 因此,找不到这样的表,名为events_isactiveflags if you are trying to get active sessions you can try this code 如果您尝试进行活动会话,则可以尝试以下代码

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

删除数据库,然后再次运行syncdb

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM