我正在尝试在Peewee 3.2.2中通过一个带有额外列的中介表来建立多对多关系,如下所示:
ThroughDeferred = DeferredThroughModel()
class Playlist(BaseModel):
...
movies = ManyToManyField(Movie, backref='playlists', through_model=ThroughDeferred)
class Movie(BaseModel):
name = CharField(max_length=100)
class PlaylistMovie(BaseModel):
playlist = ForeignKeyField(column_name='playlist_id', field='id', model=Playlist)
movie = ForeignKeyField(column_name='movie_id', field='id', model=Movie)
position = PositiveSmallIntegerField(default=1)
class Meta:
table_name = 'playlist_movie_relation'
ThroughDeferred.set_model(PlaylistMovie)
然而,当我查询时,我只得到了相关电影数据的列表,但没有位置信息。
list(playlist.movies.dicts())
> [{name: 'blah', id: 3}, ...]
我该如何获取playlist.movies中的位置数据?
through_model
声明来使用,对吧?顺便说一下,感谢你在peewee上做出的出色工作。 - altunyurt