请在详细研究后放弃修复此Meta类值。 我在尝试使用" get_absolute_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
感谢。
答案 0 :(得分: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']
阅读Model documentation并注意Meta options
部分修改强>
另外,请勿使用permalink
装饰器,因为它不再推荐:
https://docs.djangoproject.com/en/1.6/ref/models/instances/#the-permalink-decorator
不再推荐永久链接装饰器。您应该在get_absolute_url方法的主体中使用reverse()。