Django admin中的下拉框不会自动填充选项

时间:2012-10-26 06:17:19

标签: python django

我的models.py文件中有2个模型;类型和音轨。每个曲目都将被分配一个类型;因此,我定义了一个ForeignKey关系。 我的问题是在管理视图中,当我想在每个轨道前添加类型时,我无法从组合框中选择选项。我必须点击添加符号(即绿色+)然后弹出一个类型窗口然后我可以添加该类型。

我希望能够添加一首曲目并在底部的小组合框中选择该类型。

以下是图片:

I want to be able to see the genre choices instead of clicking "add"

第二张图片:

What happens when I click "add" 我的代码片段如下:

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)

如果我需要重新提出我的问题或标题,请告诉我。我很难说出来。非常感谢你。

1 个答案:

答案 0 :(得分:2)

您有+图标,因为您可能尚未向流派型号添加任何记录。 添加一个后,组合框将包含此记录。

但是似乎你已经知道了类型将会是什么,所以你可以这样做:

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)