使用Django的manymany关系



我在models.py上有以下代码

class Movie(models.Model):
    mov = models.CharField(max_length = 500)
    def __str__(self):
        return self.mov
class Atrib(models.Model):
    atrib = models.CharField(max_length = 500)
    def __str__(self):
        return self.atrib
class Dict(models.Model):
    atrib = models.ForeignKey(Atrib)
    dictionary = models.ManyToManyField(Movie, related_name = 'dictionary')

我想加载一个默认的dict: {attribute1:[movie1, movie2, ...], atribute2:[movie2, movie3,...] ... }使用Django.

首先,我使用Atrib类添加了字典的所有属性。现在我需要为每个属性添加相关的电影。我尝试做以下事情,只考虑一个属性(只是测试):

attribute1 = Atrib(atrib = atribs)
for m in dictionary[attribute]:
    m = Movie(mov = m)
    m.save()
    attribute1.dictionary.add(m)

显示如下错误:

AttributeError: 'Atrib' object has no attribute 'dictionary'.

我为这种类型的字典做的模型正确吗?为什么会出现这个错误呢?我是Django的新手,我有点迷路了!

提前感谢!

首先你需要保存attribute1 = Atrib(atrib = atribs)do attribute1.save()

接下来,在Attribute对象创建之后,没有与之相关的Dictionary对象。您需要首先创建它,并将其设置为此对象,然后您就可以进行您想要的操作。

注意:访问attribute.dict需要OneToOne关系,而不是ForeignKey。

最新更新