Django admin中的间接内联

har*_*oba 17 python django django-admin

我有以下型号:

class UserProfile(models.Model):
    user = models.OneToOneField(User)

class Property(models.Model):
    user = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

我想创建一个TabularInline显示连接到UserProfile其Django管理页面上的特定属性的每个属性.这里的问题当然是Property没有ForeignKey直接的UserProfile,所以我不能简单地写

class PropertyTabularInline(admin.TabularInline):
    model = Property

class UserProfileAdmin(admin.ModelAdmin):
    inlines = (PropertyTabularInline,)
Run Code Online (Sandbox Code Playgroud)

我怎样才能轻松做到我想要的?

Ben*_*Ben 2

您可以覆盖用户管理页面以显示ProfileProperty模型。

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from myapp.models import *

class ProfileInline(admin.TabularInline):
    model = Profile

class PropertyInline(admin.TabularInline):
    model = Property

class UserAdmin(UserAdmin):
    inlines = (ProfileInline, PropertyInline,)

admin.site.unregister(User)
admin.site.register(User, UserAdmin)
Run Code Online (Sandbox Code Playgroud)

您还可以删除显示的任何不需要/未使用的用户属性(例如组或权限)

更多信息: https: //docs.djangoproject.com/en/1.8/topics/auth/customizing/#extending-the-existing-user-model

在这里: https: //docs.djangoproject.com/en/1.8/topics/auth/customizing/#a-full-example

  • 但这不是我想要的——我想在个人资料管理页面上显示内联内容,而不是在用户管理页面上。 (3认同)