django admin外键字段数据添加

时间:2011-06-27 11:53:36

标签: django django-admin

为django admin中的任何应用添加表单,对于该模型的外键字段..带有添加按钮的下拉列表(在弹出窗口中打开)。我们可以有一个表单,我们可以在同一表单中添加外键模型字段。

例如

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

对于用户和联系人字段,管理员添加表单中包含带添加按钮的下拉列表。我们可以在同一页面中显示所有用户和联系人字段吗?

2 个答案:

答案 0 :(得分:13)

是的,你可以使用内联管理系统来做到这一点。

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

答案 1 :(得分:3)

有一个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)