【发布时间】:2015-05-10 03:53:11
【问题描述】:
我对 Django 很陌生,我正在创建一个应用程序,用于存储移动设备上应用程序的单位转换表。
每个 UnitCategory 可以有多个 Unit,每个 Unit 都有一个乘法因子用于在它们之间转换值。当前的模型可以简化为:
class UnitCategory(models.Model):
name=models.CharField(max_length=100)
class Unit(models.Model):
name=models.CharField(max_length=200)
multiplicand=models.FloatField(default=1)
category=models.ForeignKey('UnitCategory',related_name='units_set')
使用管理类:
class UnitCategoryAdmin(admin.ModelAdmin):
model=UnitCategory
inlines=[UnitInline]
class UnitInline(admin.TabularInline):
model=Unit
现在,与其输入所有潜在单位的所有乘法因子,不如将许多类别中的大多数单位构建为其他基本类别的函数,例如,一个简单的例子是:[速度] = [距离] x [时间]^-1。
我正在尝试添加一个类来提供另一组内联来存储复合转换的数据。每个内联都有一个下拉列表来选择一个基本单位类别和一个整数字段来输入它被提升到的功率。我知道如何使用 ForeignKey 创建下拉列表,但我已经使用一个 ForeignKey 将内联模型链接到 UnitCategory,所以我最终得到了两个指向同一个父类的 ForeignKey:
class CompoundConversionCategory(models.Model):
parent=models.ForeignKey('UnitCategory',related_name='compounds_set')
category=models.ForeignKey('UnitCategory',related_name='category_set')
power=models.IntegerField(default=1)
管理类的位置:
class UnitCategoryAdmin(admin.ModelAdmin):
model=UnitCategory
inlines=[UnitInline,CompoundCategoryInline]
class UnitInline(admin.TabularInline):
model=Unit
class CompoundCategoryInline(admin.TabularInline):
class=CompoundConversionCategory
毫不奇怪,Django 不喜欢我对同一个父类使用两个 ForeignKey。有没有办法指定其中一个应该链接到与父对象不同的对象,或者其他更合适的方法来从模型创建下拉列表?
【问题讨论】:
标签: django django-models django-admin