编辑为使用一对一字段
我想将建筑物的面积添加到 django modeladmin 中。表结构是
class Area(models.Model):
id= models.IntegerField('Buildings', db_column='id')
area=models.FloatField(blank=True, null=True)
class Buildings(models.Model):
id = models.AutoField(primary_key=True)
auto_sf = models.OneToOneField(Area, db_column='id')
我知道我可以通过使用访问区域属性
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'))
如前所述,您正在寻求使用内联模型管理 https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin,像这样:
class AreaInline(admin.StackedInline):
model = Area
class BuildingAdmin(admin.ModelAdmin):
inlines = (AreaInline, )
admin.site.register(Building, BuildingAdmin)
此外,您的模型最好应该有单一的名称,即Building
,以获得更多语义意义 - 例如建筑物有一个区域。除非Buildings
对象实际上是每个实例管理多个建筑物。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)