use*_*147 5 python django one-to-one django-admin python-3.x
编辑为使用一对一字段
我想将建筑物的面积添加到 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')
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过使用访问区域属性
b=buildings.get(id=1)
print(b.area.area)
Run Code Online (Sandbox Code Playgroud)
但我不明白如何将 b.area.area 合并到 modeladmin 中 - 因为这不起作用。
class AdminSection(admin.ModelAdmin):
def area(self, obj):
return obj.area.area
fields=(('id','area'))
Run Code Online (Sandbox Code Playgroud)
小智 5
如上所述,您希望使用内联模型 admin,如下所示:
class AreaInline(admin.StackedInline):
model = Area
class BuildingAdmin(admin.ModelAdmin):
inlines = (AreaInline, )
admin.site.register(Building, BuildingAdmin)
Run Code Online (Sandbox Code Playgroud)
此外,您的模型理想情况下应该具有单一名称,即Building,以获得更多语义意义 - 例如,建筑物有一个区域。除非该Buildings对象实际上每个实例管理多个建筑物。
| 归档时间: |
|
| 查看次数: |
14718 次 |
| 最近记录: |