2012-10-26 66 views
1

我的models.py文件中有2個模型;流派和音軌。每個曲目將被分配一個流派;因此,我定義了一個ForeignKey關係。 我的問題是,在管理員視圖中,當我想添加每條曲目前的流派時,我無法從組合框中選擇選項。我必須點擊添加符號(即綠色+),然後彈出一個流派窗口,然後我可以添加流派。Django admin中的下拉框不會自動填充選項

我希望能夠添加曲目並在底部的小組合框中選擇流派。

以下是圖像:

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) 

請讓我知道如果我需要改述我的問題或標題。我很難把它寫成文字。非常感謝你。

回答

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) 
+0

我還定義了一個外鍵關係? – dobleV

+0

不,你應該刪除體裁模型 – YardenST

+0

我的計劃是最終能夠顯示在HTML模板中的特定類型下的所有軌道。我將有一個顯示流派下所有曲目的頁面。刪除模型仍然允許我這樣做?謝謝 – dobleV