我正在创建一个带有两个指向同一字段的 ManyToManyFields 的 Django 模型。
在我的示例中,人才和兴趣都是“技能”,但通过表不同。
class Skills(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=255, unique=True)
users = models.ManyToManyField(UserProfile, default=None,
through='TalentDetails', related_name='talents')
users = models.ManyToManyField(UserProfile, default=None,
through='InterestDetails', related_name='interests')
尝试通过相关名称访问人才时出现错误
UserProfile.interests.all() #[<Skills: Guitar>]
UserProfile.talents.all() # AttributeError: 'UserProfile' object has no attribute 'talents'
# the following works
UserProfile.talentdetails_set.all() # [<TalentDetails: (u'Architecture',)>]
所以有几个问题:
- 为什么第二个查询失败?
- 这是在同一字段上指定多个“通过”表的一种犹太方式,还是有更好的方法来做到这一点?