2

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

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 像这样预填充 slug:

class GenreAdmin(admin.ModelAdmin):
  prepopulated_fields = {"slug": ("genre_choices",)}

在管理站点中,我注意到 slug 仅填充到第一个字母。例如,对于摇滚,只R选择了。我如何选择元组的另一部分,即 Rock 代替?

4

3 回答 3

0

简单,将您的 GENRE_CHOICES 字典更改为:

 ('rock', 'Rock'),
 ('hip-hop', 'Hip-Hop'),

等等等等

于 2012-10-25T07:06:14.937 回答
0

这看起来像一个废弃的错误:

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

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

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

GENRE_CHOICES = (
             ('rock', 'Rock'),
             ('blues', 'Blues'),
             ('jazz', 'Jazz'),
             ('pop', 'Pop'), 
             ('hip-hop', 'Hip-Hop'),    
             )

旁注:您的 CharField 中有 max_length=1。也许这个错误实际上已经修复,但 SlugField 只需要一个字符。不过不确定。编辑:这个 ( max_length=1) 实际上并没有改变任何东西。感谢 jpic

于 2012-10-25T07:10:55.597 回答
-1

扩大最大长度,

genre_choices = models.CharField(max_length=1, choices=GENRE_CHOICES)

genre_choices = models.CharField(max_length=10, choices=GENRE_CHOICES)

可能有帮助,只是猜测。

于 2012-10-25T07:10:51.947 回答