Skip to main content
 首页 » 编程设计

python之Django 中的依赖字段

2025年05月04日40zhenyulu

我正在为 Django 应用程序设计模型,但我不太清楚如何解决问题。

我有 3 个模型。 服务器、模块和设备。

Server 是模块可以运行的服务器。 模块 在服务器上运行,并包含设备。

Devices 的问题是名称始终是一个字段,但属性可能会改变。

我考虑过只在属性中放置一个 JSON 值,但我不知道如何使用 Django admin 来做到这一点。

基本上,用户将输入设备的名称,并根据设备所连接的模块显示各种不同的字段以供填写。

例如:

module rfm_ninjablock: 
Device fields would be "name" and "code" 
 
module LimitlessLED 
Device fields would be "name", "controller", "group" and "LightID" 

有没有一种直接的方法可以做到这一点,还是我采用了错误的方法?

请您参考如下方法:

一种方法是制作第四个模型:DeviceAttribute .

  • 每个设备都有一个名称,并且有零个或多个 DeviceAttribute

  • A DeviceAttribute有两个字段:key和 value .

或者,您可以使用建议的 JSON,但您将无法查询或更新它。这有点反模式。

更新:如果您有多个 Device 的“类” s,那么您可以通过对模型进行子类化来实现类型安全,而不是拥有任意属性。

有several ways去做这个。我经常使用 multi-table方法。

它创建一个 OneToOneField在 DeviceSubclassA 之间和 Device , 和 DeviceSubclassB 之间和 Device .

您可以将某些字段添加到 DeviceSubclassA , 和不同的字段 DeviceSubclassB .常见的name属性在 Device 上父模型。