Class meta获得了无效的属性

Mud*_*hmi 2 django python-2.7

在详细研究之后我放弃了,请帮助修复这个Meta类值.我在尝试使用"get_absolute_url"处理模板URL时遇到错误,因为它响应以下错误.

TypeError:'class Meta'获得无效属性:sale_price,get_absolute_url.

以下是我的代码.

class Meta:
        db_table = 'products'
        ordering = ['-created_at']

        def __unicode__(self):
            return self.name

        @models.permalink
        def get_absolute_url(self):
            return ('catalog_product', (), {'product_slug': self.slug})

        def sale_price(self):
            if self.old_price > self.price:
                return self.price
            else:
                return None
Run Code Online (Sandbox Code Playgroud)

谢谢.

Tim*_*ony 7

您误解了模型的定义方式.您将方法和属性添加到实际的Model类中,并使用Meta该类在类上指定选项:

class MyModel(models.Model):
    old_price = ...
    price = ...
    slug = ...
    created_at = ...
    ...

    def __unicode__(self):
        return self.name

    @models.permalink
    def get_absolute_url(self):
        return ('catalog_product', (), {'product_slug': self.slug})

    def sale_price(self):
        if self.old_price > self.price:
            return self.price
        else:
            return None
    class Meta:
        db_table = 'products'
        ordering = ['-created_at']
Run Code Online (Sandbox Code Playgroud)

阅读模型文档,并注意Meta选项部分

编辑

此外,不要使用permalink装饰器,因为它不再推荐:

https://docs.djangoproject.com/en/1.6/ref/models/instances/#the-permalink-decorator

不再推荐永久链接装饰器.您应该在get_absolute_url方法的主体中使用reverse().