代码之家  ›  专栏  ›  技术社区  ›  kender DaveL

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

  •  1
  • kender DaveL  · 技术社区  · 14 年前

    我的模特看起来是这样的:

    Location:
        state
        county
        city
        street
    
    Building:
        name
        location = ForeignKey(Location)
    

    现在,在管理中,当编辑 Building how the admin should look like

    所以,这就像一个内联,但是 Location 在里面 ,不是oposite方式。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Bernd Petersohn    14 年前

    如果你在建筑和地点之间保持一对一的关系,你的问题可能更容易解决。例如,通过从location子类化building或通过将location字段集成到buildings。

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

    模型:

    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)