2012-01-23 71 views
1

我已在在models.py如下:Django的2種型號ManyToManyField在admin.py

class Choices(models.Model): 
    description = models.CharField(max_length=300) 

    def __unicode__(self): 
     return self.description 

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    fullname = models.CharField(_('Full Name'), max_length=50) 
    birthdate = models.DateTimeField(_('Birthday')) 
    url = models.URLField(_('Website'), blank=True) 
    company = models.CharField(_('Company'), max_length=50) 
    CATEGORY_CHOICES = (
      ('M',_('Male')), 
      ('F',_('Female')), 
      ) 
    gender = models.CharField(_('Gender'), max_length=200, choices = CATEGORY_CHOICES) 
    picture = models.ImageField(_('Picture/Avatar'), upload_to='profile_photo', blank=True) 
    bio = models.TextField() 
    planguages = models.ManyToManyField(Choices) 

現在,我希望能夠編輯在管理這兩個用戶配置文件,以及選擇填充選擇用戶可以從創建配置文件時選擇。作爲一個django新手,我設法只編輯用戶配置文件的選項,但沒有設法填充選擇。無論如何,我可以做到,但我不知道如何擁有兩者。

編輯: 這是我目前的admin.py

class ChoicesAdmin(admin.ModelAdmin): 
    list_display = ['description'] 

class ProfilesAdmin(admin.ModelAdmin): 
    list_display = ['user'] 

admin.site.register(UserProfile, ProfilesAdmin) 

回答

1

你在找什麼是filter_horizontal

class ChoicesAdmin(admin.ModelAdmin): 
    list_display = ['description'] 

class ProfilesAdmin(admin.ModelAdmin): 
    list_display = ['user'] 
    filter_horizontal = ['planguages'] 

admin.site.register(UserProfile, ProfilesAdmin) 
admin.site.register(Choices, ChoicesAdmin) 

這將使你的語言添加到用戶。

另外,您必須註冊ChoicesAdmin類才能看到綠色+鏈接以添加選項。

-1

查找文檔中的內聯。

+0

我做了,我設法做到了,但它向我展示了綁定到用戶的選擇,而不是我可以定義的選擇。 – Milos

+0

@ user1164124 - 如果您爲'Choices'設置了'ModelAdmin',那麼您的'planguages'字段旁邊會出現一個加號圖標,它會將您帶到選擇創建屏幕。 –

+0

@YujiTomita我嘗試過,但它說不支持ManyToMany字段。 – Milos