1

私のmodels.pyファイルには2つのモデルがあります。ジャンルとAudioTracks。各トラックにはジャンルが割り当てられます。そのため、ForeignKey関係を定義しました。私の問題は、管理ビューで、各トラックの前にジャンルを追加したいときに、コンボボックスから選択肢を選択できないことです。追加記号(つまり、緑色の+)をクリックする必要があります。そうすると、[ジャンル]ウィンドウがポップアップし、ジャンルを追加できます。

トラックを追加して、下部の小さなコンボボックスでジャンルを選択できるようにしたいと思います。

画像は次のとおりです。

クリックする代わりに、ジャンルの選択肢を表示できるようにしたい

2番目の画像:

クリックするとどうなりますか 私のコードの抜粋は以下のとおりです。

GENRE_CHOICES =  (
             ('rock', 'Rock'),
             ('jazz/blues', 'Jazz/Blues'),
             ('blues', 'Blues'),
             ('r&b', 'R&B'),
             ('jazz', 'Jazz'),
             ('pop', 'Pop'), 
             ('hip-hop', 'Hip-Hop'),    
             )


def get_upload_path(dirname, obj, filename):
  return os.path.join("audiotracks", dirname, obj.user.username, filename)

def get_audio_upload_path(obj, filename):
  return get_upload_path("audio_files", obj, filename)


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

def __unicode__(self):
    return self.title

def get_absolute_url(self):
    return ('view_midmentals_genre', None, {'slug':self.slug})

class AudioTrack(models.Model):
  class Meta:
      pass

user = models.ForeignKey(User, 
    related_name = "tracks",
    blank = True,
    null = True
)

added_on = models.DateTimeField(auto_now_add=True, null = True)
updated_on = models.DateTimeField(auto_now=True, null = True)
audio_file = models.FileField(_("Audio file"), upload_to=get_audio_upload_path)
title = models.CharField(_("Title"), max_length="200", null=True)
description = models.TextField(_("Description"), null=True, blank=True)
slug = models.SlugField(max_length = 40, unique = True) #so as to have a dedicated page for each category 
genre = models.ForeignKey(Genre)

質問やタイトルを言い換える必要がある場合はお知らせください。言葉にするのに苦労しました。どうもありがとうございます。

4

1 に答える 1

2

+ アイコンが表示されているのは、ジャンル モデルにレコードを追加していない可能性があるためです。1 つ追加すると、コンボ ボックスにこのレコードが含まれます。

しかし、ジャンルがどうなるかはすでにわかっているようですので、これを行うだけです:

class AudioTrack(models.Model):
    genre = models.CharField(..., choices = GENRE_CHOICES)

コンボ ボックスには、リストにある選択肢が含まれます。

次のような選択肢リストを検討してください。

GENRE_CHOICES = ((0,'Rock'),(1, 'Jazz'),(2,'Hip Hop'))

以降:

genre = models.PositiveSmallIntegerField(choices = GENRE_CHOICES)
于 2012-10-26T06:31:12.273 に答える