【发布时间】:2012-11-20 20:18:35
【问题描述】:
我有以下实体:
- 视频
- 标签
- 关系实体 - 视频标签
这是架构:
class Tag(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, unique=True)
class Meta:
db_table = u'tags'
class Video(models.Model):
guid = models.CharField(max_length=36, primary_key=True)
title = models.CharField(max_length=600)
tags = models.ManyToManyField(Tag, through='VideoTag')
class Meta:
db_table = u'videos'
class VideoTag(models.Model):
guid = models.CharField(max_length=36, primary_key=True)
tag = models.ForeignKey(Tag)
video = models.ForeignKey(Video)
weight = models.FloatField()
class Meta:
db_table = u'video_tags'
现在,这一切在创建实体时运行良好。现在说我想按其 ID 提取视频并遍历其标签。
当我这样做时:
video = Video.objects.get(pk=1)
tags = video.tags.all()
事实上,我得到了一个标签实体列表,因为它们与视频相关,而不是关系实体 VideoTag。我想访问视频的标签,更重要的是关系表上的额外字段之一 - 权重。我不能这样做,因为视频上的 tags 属性是 Tag 类型。
谢谢:)
【问题讨论】:
标签: python django many-to-many querying