Django模型,一对多关系及反向引用[如何]
我有一个数据库,里面用SQLAlchemy填充了一些对象,但我不知道怎么在Django中创建模型。
我需要Show对象通过关系来拥有Episode对象的数组。在数据库中,所有的Episode对象都有一个'show_title'列,而所有的Show对象都有'episodes'。
这些对象在SQLAlchemy中看起来是这样的,
class AlphaShow(Base) :
__tablename__ = 'show'
title = Column(UnicodeText, primary_key = True)
description = Column(UnicodeText)
image = Column(UnicodeText)
episodes = relationship("Episode", backref="show")
def __init__(self,_meta) :
self.title = _meta.title
self.image = _meta.image
self.description = _meta.description
class Episode (Base) : #was without base
__tablename__= 'episode'
title = Column(UnicodeText, primary_key = True)
link = Column(UnicodeText)
show_title = Column(UnicodeText, ForeignKey('show.title'))
def __init__(self, _title, _link) :
self.title = _title
self.link = _link
那我该如何在Django中创建这些模型呢?我试过这样做,但不管用,
class Shows(models.Model) :
episodes = []
title = models.TextField(primary_key=True)
description = models.TextField()
image = models.TextField()
class Meta:
db_table = 'shows'
def __str__(self):
return self.title
class Episode(models.Model) :
title = models.TextField(primary_key=True)
link = models.TextField()
show_title = models.ForeignKey(Shows)
class Meta:
db_table = 'episodes'
def __str__(self):
return self.title
我想我缺少的是,Django中对应SQLAlchemy的是什么。
episodes = relationship("Episode", backref="show")
任何帮助都将非常感谢,谢谢!
1 个回答
10
试试这个
class Shows(models.Model) :
title = models.TextField(primary_key=True)
description = models.TextField()
image = models.TextField()
class Meta:
db_table = 'shows'
def __str__(self):
return self.title
class Episode(models.Model) :
show = models.ForeignKey(Show, related_name="episodes")
title = models.TextField(primary_key=True)
link = models.TextField()
show_title = models.ForeignKey(Shows)
class Meta:
db_table = 'episodes'
def __str__(self):
return self.title