我有一个关于管理面板外键的Django相关问题。我面临以下情况:
class Driver(models.Model):
name = models.CharField(max_length=200)
executable = models.CharField(max_length=200)
class Device(models.Model):
name = models.CharField(max_length=200)
bound_driver = models.ForeignKey(Driver)
class DriverAssignment(models.Model):
device = models.ForeignKey(Device)
driver = models.ForeignKey(Driver)
每个设备都需要有一个绑定的驱动程序(它使用这个驱动程序)。DriverAssignment应该是显示哪个驱动程序可以被哪个设备使用的表。所以一个设备可以有多个驱动程序,这些驱动程序可以被绑定。现在我想在我的管理面板上有一个下拉列表,显示特定设备的所有可能驱动程序,以选择“绑定驱动程序”。在
在Django我该怎么做?对于一个有经验的Django人来说,这可能是件容易的事。我希望有人能给我一个暗示,因为我对Django还是个新手。谢谢!在
这里有一个反向内联的片段。如果你还需要它,你可以试试这个: https://gist.github.com/mzbyszewska/8b6afc312b024832aa85
我曾在django 1.5和1.6的OneToOneField中使用过它。不幸的是,我没有针对ForeignKeyField测试它,但是之前的一个用户声称它也适用于ForeignKeyField。在
代码片段的最佳描述包含在其中。Person类是您的DriverAssignment类,设备与下面示例中的Address类相对应:
对于Django>;1.8
使用InlineModelAdmin(docs for 2.2)如下所述:
在模型.py
在管理员py
^{pr2}$将模型结构更改为:
许多人会做同样的工作作为司机信号表。在
您可以在Available drivers(可用驱动程序)字段中添加可用驱动程序。
但您也希望绑定的驱动程序是可用的驱动程序之一。您必须在表单中进行验证。为此你必须超越管理表格。查看链接
参考链接:
多个字段:https://docs.djangoproject.com/en/1.6/ref/models/fields/#django.db.models.ManyToManyField
模型管理(超越管理功能): https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-objects
如果你不想学到更多的东西,你必须花一些时间阅读和执行。:)
或
如果您想使用相同的结构,那么您就必须超越
^{pr2}$ModelAdmin
中的form
,请参见here并为您提供自定义表单,如下所示:https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form
相关问题 更多 >
编程相关推荐