编辑使用一对一字段
我想将建筑物的区域添加到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)
我知道我可以使用
访问area属性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'))
答案 0 :(得分:2)
如上所述,您希望使用inline model admin,如下所示:
class AreaInline(admin.StackedInline):
model = Area
class BuildingAdmin(admin.ModelAdmin):
inlines = (AreaInline, )
admin.site.register(Building, BuildingAdmin)
此外,理想情况下,您的模型应具有单数名称,即Building
,以使其更具语义感 - 例如建筑物有一个区域。除非Buildings
对象实际上是每个实例管理多个建筑物。