Пав*_*вин 8 django django-models slug
我正在尝试在Django中编写一个抽象的父模型,这将帮助我从许多其他子模型的名称字段中创建一些slug字段.它使用反编码,适用于从西里尔字母到拉丁字母的透射形式.然后它使用django的slugify函数来删除垃圾.
class SlugModel(models.Model):
class Meta:
abstract = True
name = models.CharField(max_length=128, default=u'')
slug = models.CharField(max_length=128,blank=True)
def save(self, *args, **kwargs):
if not self.slug:
slug = slugify(unicode(self.name).encode('trans'))
else:
slug = self.slug
count = self.__class__.objects.filter(slug = slug).count()
if count > 1:
if slug[-2]=='_':
count = int(slug[-1])
slug = slug[:-2]
self.slug = '{0}_{1}'.format(slug,count+1)
else:
self.slug = slug
super(self.__class__, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
class Foo(SlugModel):
pass
Run Code Online (Sandbox Code Playgroud)
当我尝试保存一些Foo对象时会出现问题:它会导致RuntimeError(超出最大递归深度).我究竟做错了什么?我该怎么写得super(self.__class__, self).save(*args, **kwargs)正确?
好,我知道了.而不是使用 super(self.__class__, self).save(*args, **kwargs).
我需要 super(SlugModel, self).save(*args, **kwargs).
感谢辣椒种植者.
| 归档时间: |
|
| 查看次数: |
3067 次 |
| 最近记录: |