2011-06-27 216 views
18

在django admin的任何應用程序的添加窗體中,對於該模型的外鍵字段..帶有添加按鈕(在彈出窗口中打開)的下拉列表。我們可以有一個表單,我們可以用相同的形式添加外鍵模型字段。django admin外鍵字段數據添加

對於e.g

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    contact = models.ForeignKey(Contact, blank=True, null=True) 

對於用戶和聯繫人的字段添加按鈕下拉出現在管理員添加form.Can我們的用戶和聯繫人在同一頁上的所有字段?

回答

11

是的,你可以使用內聯管理系統來做到這一點。

class UserAdmin(admin.StackedInline): 
    model = User 
class ContactAdmin(admin.StackedInline): 
    model = Contact 

class UserProfileAdmin(admin.ModelAdmin): 
    inlines = [ UserAdmin, ContactAdmin ] 

瞭解更多詳情請查看https://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects

+0

臨屋nks Darioush, 但它沒有解決,內聯管理系統適用於相反的情況,從手冊中可以看到[link](https://docs.djangoproject.com/en/dev/ref/contrib/admin/ #inlinemodeladmin對象) 對於上面的情況下,如果我將需要它的工作原理是: '類UserProfileAdmin(admin.StackedInline): 模型=用戶配置 類UserAdmin(admin.ModelAdmin): 內聯= [UserProfileAdmin] ' 按照您給出的方式給出錯誤'沒有ForeignKey到' – Neo

+1

對不起,我的不好。顯然有沒有簡單的方法來使這項工作,請參閱http://stackoverflow.com/questions/6419248/inline-like-solution-for-django-admin-where-admin-contains-foreignkey-to-other-mo for更多信息 – Darioush

0

有Django的插件來獲得在這樣的情況下的內嵌其中的關係是一般的反面:django_reverse_admin

你需要django_reverse_admin添加到您的requirements.txt:

-e git+https://github.com/anziem/django_reverse_admin.git#egg=django_reverse_admin 

然後將其導入:

admin.py

from django_reverse_admin import ReverseModelAdmin 

class UserProfileAdmin(ReverseModelAdmin): 
    inline_reverse = ['user', 'contact'] 
    inline_type = 'tabular' # or could be 'stacked' 

admin.site.register(UserProfile, UserProfileAdmin) 
相關問題