0

嘿,我有一个可以通过 2 个不同的 url 访问的模型(取决于域)。我在视图和模板中像这样使用它们没有问题。

在构建站点地图时,get_absolute_url 不应该返回相同的结果,所以我想:我可以子类化模型并覆盖 get_absolute_url 方法:

class FanpitConcert(BandtasticConcert):
    def get_absolute_url(self):
        return ('event_checkout',(),{'artist_slug':self.slug_name,
                                     'year': self.get_date().year,
                                     'month': self.get_date().month,
                                     'day': self.get_date().day,
                                    })
    class Meta:
        abstract = True

然后将这个子类模型用于站点地图类

class ConcertsSiteMap(Sitemap):
    def items(self):
        return FanpitConcert.objects.all().filter(app='Fanpit')

但是当我访问 /sitemap.xml django 仍然从原始模型调用 get_absolute_url

django 在这里有什么黑魔法吗?还是我错过了一些明显的东西?

更新

我尝试删除 abstract = True 部分并使用 class Meta: db_table = 'same_table_as_base_model'

但是现在 django 抱怨找不到列。

4

1 回答 1

1

在这种情况下,最好使用代理模型,而不是抽象。

所以子类模型会有

class Meta:
    proxy = True

更多关于代理模型的信息在这里

于 2013-04-18T02:13:06.163 回答