我正在制作一个django应用程序,我覆盖了模型的save方法,使用缓慢的函数引入一个新的属性slug。但是当我尝试从shell访问该属性时,它会引发错误AttributeError: 'States' object has no attribute 'slug'
代码: -
from django.db import models
from django.template.defaultfilters import slugify
class States(models.Model):
title = models.CharField(max_length = 100)
country = models.CharField(max_length = 79)
def __str__(self):
return self.title
def save(self,*args,**kwargs):
self.slug = slugify(self.title)
super(States,self).save(*args,**kwargs)
class Colleges(models.Model):
title = models.CharField(max_length = 100)
state = models.ForeignKey(States)
Description = models.TextField()
def __str__(self):
return self.title
答案 0 :(得分:2)
那不行。 Django总是会检查你的模型类的初始定义来创建数据库映射,django不会像你那样认识slug
是一个数据库字段。在您当前的实现中,您只是将slug
创建为python类属性而不是数据库字段,因为django模型也是一个python类。
我不确定您为什么不想像定义slug
和title
一样定义country
,但最简单的解决方法是添加它作为一个类属性。
答案 1 :(得分:0)
如果您不想在数据库中保存slug,可以使用func webView(webView: UIWebView, didFailLoadWithError error: NSError?)
的类方法计算:
State
现在您可以将其作为标题:
之类的属性进行访问@property
def slug (self):
return slugify (self.title)