Django 如何在管理面板中实现基于外来模型值的依赖下拉列表
我有这样的课程:Django 如何在管理面板中实现基于外来模型值的依赖下拉列表,django,django-models,django-admin,django-smart-selects,Django,Django Models,Django Admin,Django Smart Selects,我有这样的课程: class Building(models.Model): name = models.CharField(max_length=10) floors= models.IntegerField() def __str__(self): return self.name class BuidingAccessRole(models.Model): role_name = models.CharField(max_length=1
class Building(models.Model):
name = models.CharField(max_length=10)
floors= models.IntegerField()
def __str__(self):
return self.name
class BuidingAccessRole(models.Model):
role_name = models.CharField(max_length=10) #name for the role of accessing a floor of one building
building = models.ForeignKey(building,on_delete=models.CASCADE)
floor = models.IntegerField() Note:#i want this floor to be shown as choicefield with count starting from 1 to (building.floors) and get saved as integer value in database.
def __str__(self):
return self.name
"""If we set Building admin page as this object :
name='b1'
floors=3
then :
BuidingAccessRole admin page to be shown as
name='Access for floor'
building = b1 or 1 as 'id'
floor shown as <select>1,2,3 as option </select>"""
班级建设(models.Model):
name=models.CharField(最大长度=10)
楼层=模型。整型字段()
定义(自我):
返回self.name
类BuildingAccessRole(models.Model):
role_name=models.CharField(max_length=10)#访问一栋建筑楼层的角色名称
building=models.ForeignKey(building,on_delete=models.CASCADE)
floor=models.IntegerField()注意:#我希望此楼层显示为choicefield,计数从1到(building.floors),并在数据库中保存为整数值。
定义(自我):
返回self.name
“”“如果我们将建筑管理页设置为此对象:
name='b1'
楼层=3
然后:
BuildingAccessRole管理页面将显示为
name='楼层通道'
建筑物=b1或1作为“id”
地板显示为1,2,3作为选项“”
注意:#我希望BuildingAccessRole.floor在管理页面中显示为choicefield,计数从1到(building.floors),并在数据库中保存为整数值。我试着用链式外键来实现这个,但在这种情况下不起作用。还有其他方法吗 覆盖
表单
,以便模型管理员
使用您自己的模型表单
(请参阅)。然后在表单中,您可以创建floor
aChoiceField
,并在其\uuuu init\uuuu
方法中设置所需的选项。但我希望我的选择作为所选建筑对象的楼层值。为什么?正如我所说的,您可以在表单的\uuuu init\uuuu
方法中实现这一点self.fields['floor'].choices=range(1,self.instance.building.floors+1)
或类似的内容我尝试按建议执行此操作,为相同的文件创建了git存储库(),但管理员保存无法保存列表的更改值…请尝试解决此问题。。。