我想为我的模型生成一个随机的段塞,但不设置"blank=True“(因为我想在以后通过验证来强制执行它)。
我在想我能不能做这样的事:
slug = models.SlugField(unique=True, default=some_method(), verbose_name='URL Slug')其中some_method是一种生成随机插件的方法?我试过上面的代码,但它不能工作:(
我想要做的是生成一个独特的插件(unique_slugify?)
发布于 2011-02-03 18:01:26
您可以覆盖模型保存方法,以便在创建新实体时动态生成插件。类似于:
if not self.pk:
self.slug = ''.join(random.sample(string.ascii_lowercase, 10))您可以这样做,但这样做不是很好,更好的做法是让slug成为对象名称的确定性slugified版本。
发布于 2011-02-03 20:14:28
如果您希望使用在同一模型中的某个其他字段中输入的条目自动生成插件,则可以使用此选项。
from django_extensions.db.fields import AutoSlugField
slug = AutoSlugField(_('slug'), max_length=50, unique=True, populate_from=('name',))populate_from是模型中将自动生成slug的字段
发布于 2011-09-25 22:11:54
default必须是值或可调用的。
所以是default=some_method,不是default=some_method()。下面是一个示例:
from django.contrib.auth.models import UserManager
def randomString():
um = UserManager()
return( um.make_random_password( length=25 ) )
class Foo( models.Model ):
code = models.CharField( max_length=25, default=randomString )https://stackoverflow.com/questions/4884584
复制相似问题