Django很多很多领域

时间:2016-10-11 17:23:21

标签: django

每当我创建一个新的PreDefinedSet时,它都会抓取我在数据库中添加的所有设备。

问题是如何将其设为空白,是否可以编辑多对多字段内的内容?

我的目标是创建一个类,其中包含可由用户预定义的设备列表。

以下是我的模特:

class Equipment(models.Model):

    name = models.CharField(max_length = 50)

class PreDefinedSet(models.Model):

    name = models.CharField(max_length = 100)
    Equipments = models.ManyToManyField(Equipment)

1 个答案:

答案 0 :(得分:0)

我想我明白你要做什么了。你的模型看起来很好 - 我没有看到为什么PreDefinedSet会在创建时添加相关数据的任何原因(如果你没有做任何有趣的事情)。

class Equipment(models.Model):
    name = models.CharField(max_length = 50)

class PreDefinedSet(models.Model):
    name = models.CharField(max_length = 100)
    equipments = models.ManyToManyField(Equipment, related_name='sets')

现在,如果你想操纵数据:

eq = Equipment.objects.get(name='something')
user_set = PreDefinedSet.objects.create(name='first_set')

user_set.equipments.add(eq)

user_set.equipments.all()  # will return a QuerySet with one Equipment

另外请注意related_name,因为您可以反向查询,如下所示:

eq.sets.all()  # will return a QuerySet of the sets that tool is in

有关如何操纵M2M字段的更多信息:https://docs.djangoproject.com/en/dev/topics/db/models/#many-to-many-relationships