首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Slug太短- Django

Slug太短- Django
EN

Stack Overflow用户
提问于 2012-10-25 15:02:23
回答 3查看 157关注 0票数 2

下面是我的models.py文件中的一段代码:

代码语言:javascript
复制
GENRE_CHOICES = (
             ('R', 'Rock'),
             ('B', 'Blues'),
             ('J', 'Jazz'),
             ('P', 'Pop'), 
             ('H', 'Hip-Hop'),    
             )

class Genre(models.Model):
  genre_choices = models.CharField(max_length=1, choices=GENRE_CHOICES)
  slug = models.SlugField(max_length = 100, unique = True)

admin.py预填充块,如下所示:

代码语言:javascript
复制
class GenreAdmin(admin.ModelAdmin):
  prepopulated_fields = {"slug": ("genre_choices",)}

在管理站点中,我注意到slug只填充到第一个字母。例如,对于rock,仅选择R。我如何选择元组的另一部分,也就是Rock呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-25 15:06:15

简单地,将您的GENRE_CHOICES字典更改为如下所示:

代码语言:javascript
复制
 ('rock', 'Rock'),
 ('hip-hop', 'Hip-Hop'),

等等等等

票数 0
EN

Stack Overflow用户

发布于 2012-10-25 15:10:56

这看起来像是一个被抛弃的bug:

https://code.djangoproject.com/ticket/9983

由于回归,错误修复被从1.2推迟到1.3,并且从未应用到1.3似乎您可以通过调整Django代码或应用工单中提供的补丁来修复该问题。虽然不确定它是否适用于您的Django版本。

同时,您可以尝试使用将正确预填充SlugField的object_identifiers:

代码语言:javascript
复制
GENRE_CHOICES = (
             ('rock', 'Rock'),
             ('blues', 'Blues'),
             ('jazz', 'Jazz'),
             ('pop', 'Pop'), 
             ('hip-hop', 'Hip-Hop'),    
             )

旁白:您的CharField中有max_length=1。也许bug实际上已经修复了,但是SlugField只接受一个字符。不过,这一点还不确定。编辑:这个(**max_length=1**)实际上不会改变任何东西。感谢jpic

票数 0
EN

Stack Overflow用户

发布于 2012-10-25 15:10:52

放大max_length,

代码语言:javascript
复制
genre_choices = models.CharField(max_length=1, choices=GENRE_CHOICES)

代码语言:javascript
复制
genre_choices = models.CharField(max_length=10, choices=GENRE_CHOICES)

可能会有帮助,只是猜测而已。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13063274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档