如何更改django admin中显示外键字段的方式?

时间:2010-10-21 07:49:03

标签: django django-admin

我的模特看起来像这样:

Location:
    state
    county
    city
    street

Building:
    name
    location = ForeignKey(Location)

现在,在管理员中,在修改Building时,我希望能够以这种方式编辑位置:how the admin should look like

所以,它就像一个内联,但在Location中有Building,而不是相反的方式。

1 个答案:

答案 0 :(得分:0)

如果您在建筑物和位置之间保持一对一的关系,那么您的问题可能更容易解决。例如,通过从位置继承建筑物或将位置字段集成到建筑物中。

我认为没有多少建筑物共用同一个位置。因此,无论如何,使用外键都不会节省太多钱。这个外键也使编辑变得复杂。特别是,如果您想要位置组件的单独输入字段。通常,在创建新的位置条目之前,您首先必须在现有位置搜索匹配项。

以下示例使构建Location的子类并将构建和位置字段分组为admin表单的两个部分。您的应用程序可能需要进行一些微调。

模特:

class Location(models.Model):
    state = models.CharField(max_length=30)
    county = models.CharField(max_length=30)
    city = models.CharField(max_length=30)
    street = models.CharField(max_length=30)

class Building(Location):
    name = models.CharField(max_length=120)

管理员表格:

class BuildingAdmin(admin.ModelAdmin):
    fieldsets = (
        ('Building', {
            'fields': ('name',)
        }),
        ('Location', {
            'fields': (('state', 'county', 'city', 'street'),)
        }),
    )

admin.site.register(Building, BuildingAdmin)