如何在django中注册admin中的manytomanyfield?

时间:2014-04-18 22:14:06

标签: django django-admin django-models

我的模型看起来像这样:

class Search(models.Model):
    user = models.ForeignKey(User)
    regions = models.ManyToManyField(Region)

class Region(models.Model):
    name = models.CharField(max_length=100")

在我admin注册Search modelRegion model时, 我希望User data中的Search modelsearch and user data中的Region model看到list_display。 同时在管理员的inlinesForeignKey中。由于一个是ManytoManyField,一个是{{1}},我不清楚如何使其工作。 一些帮助将不胜感激

由于

1 个答案:

答案 0 :(得分:0)

您无法轻松地在区域管理屏幕的内联中显示用户数据。下面是一个不错的起点。

from django.contrib import admin
from django.contrib.auth.models import User
from .models import Search, Region

class UserInline(admin.TabularInline):
    model = User

class SearchAdmin(admin.ModelAdmin):
    inlines = [
        UserInline,
    ]

class SearchInline(admin.TabularInline):
    model = Search

class SearchRegionsInline(admin.TabularInline):
    model = Search.regions.through

class RegionAdmin(admin.ModelAdmin):
    inlines = [
        SearchRegionsInline,
        SearchInline,
    ]

如果您正在设置从区域管理界面编辑用户信息,那么您需要为SearchInline创建自定义表单,以便它包含User模型中的字段然后,如果传入实例,则填充__init__中的值。