一对一现场Django管理

2024-05-14 19:21:33 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑为使用一对一字段

我想把建筑物的面积加到django modeladmin中。表格结构是

class Buildings(models.Model):
    id = models.AutoField(primary_key=True)
    auto_sf = models.OneToOneField(Area, db_column='id')

class Area(models.Model):
    id= models.IntegerField('Buildings', db_column='id')
    area=models.FloatField(blank=True, null=True) 

我知道我可以使用

b=buildings.get(id=1)
print(b.area.area)

但我不知道如何将b.area.area合并到modeladmin中,因为这不起作用。

class AdminSection(admin.ModelAdmin):

    def area(self, obj):
           return obj.area.area

    fields=(('id','area'))

Tags: idtrueobj编辑dbmodelmodelscolumn
1条回答
网友
1楼 · 发布于 2024-05-14 19:21:33

如前所述,您希望使用inline model admin,如下所示:

class AreaInline(admin.StackedInline):
    model = Area
class BuildingAdmin(admin.ModelAdmin):
    inlines = (AreaInline, )
admin.site.register(Building, BuildingAdmin)

此外,理想情况下,您的模型应该具有单数名称,即Building,以便更具语义意义-例如,建筑物具有一个区域。除非Buildings对象实际上是在管理每个实例的多个建筑。

相关问题 更多 >

    热门问题