如果你在建筑和地点之间保持一对一的关系,你的问题可能更容易解决。例如,通过从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)