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は、次のようにスラッグを事前入力します。

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

管理サイトでは、ナメクジは最初の文字にしか表示されないことに気付きました。たとえば、岩の場合は、のみRが選択されます。タプルの他の部分、つまりロックを代わりに選択するにはどうすればよいですか?

4

3 に答える 3

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はそのために1つの文字しか取りません。しかし、それについてはよくわかりません。編集:これ(max_length=1)は実際には何も変更しません。jpicに感謝します

于 2012-10-25T07:10:55.597 に答える
0

簡単です。GENRE_CHOICESdictを次のように変更します。

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

などなど

于 2012-10-25T07:06:14.937 に答える
-1

max_lengthを拡大し、

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 に答える