如何在模型中存储外键列表

Muk*_*kul 1 python sqlite django django-rest-framework

大家好,这里的每个人都是我面临同样问题的情况,请看一下:

分类组.py

class DeviceClassificationGroup:
    vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE, default=None, null=True)
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=1000)
    classification = ??
Run Code Online (Sandbox Code Playgroud)

分类.py

class DeviceClassification(models.Model):
    vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE, default=None, null=True)
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=1000)
    device_type = models.IntegerField()
    device_name_regex = models.CharField(max_length=100)
    vid_pid = models.CharField(max_length=50)
    device_instance_id = models.CharField(max_length=100)
    serial_number = models.CharField(max_length=100)
    brand = models.CharField(max_length=25)

    def __str__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

所以我会有一组分类,可以放入一个分类组中。

我如何在 django 模型中存储未知数量的外键?

请帮我解决这个问题。

Haf*_*uss 5

ForeignKey通过向模型添加字段DeviceClassification

class DeviceClassification(models.Model):
  group = models.ForeignKey(DeviceClassificationGroup, on_delete=models.CASCADE, related_name='classifications')
Run Code Online (Sandbox Code Playgroud)

请记住,向模型添加外键会创建一对多关系,这意味着 1DeviceClassification属于1 DeviceClassificationGroup,并且 aDeviceClassificationGroup可以有多个 DeviceClassification与其关联的对象。

如果您现在想DeviceClassification从实例访问您的对象DeviceClassificationGroup

group.classifications.all()
Run Code Online (Sandbox Code Playgroud)

related_name请注意,访问器与模型中指定的相同。

如果您不指定 a related_name,它将自动选择为<model_name>_set。如果您不需要相关名称,可以使用+

文档:相关名称