我在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')
我想使用Django加载这样的defaultdict:{attribute1:[movie1, movie2, ...], atribute2:[movie2, movie3,...] ... }
。
首先,我使用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的新手,我有点迷路了!
提前致谢!
答案 0 :(得分:1)
首先,您需要保存attribute1 = Atrib(atrib = atribs)
做attribute1.save()
接下来,在Attribute
对象创建后,您没有与其相关的Dictionary
对象。
您需要先创建它,将其设置为此对象,然后您就可以进行所需的操作。
注意:要访问attribute.dict
,您需要OneToOne关系,而不是ForeignKey。