使用Django查询/显示多联接数据的最佳方法

时间:2019-02-16 21:40:02

标签: django django-models

我是Django的新手,这是有关查询/显示联接表的问题。

我有一个包含“经理”和“技能”的模型设置...以及一个“经理技能”的联接表。

ManagerSkills具有到“ manager”表和“ skill”表的外键链接。这是一个多对多表。 (经理有很多技能,技能属于不同的经理)

我希望检索经理列表,将其显示在网格中,并有一列“技能”,其中将显示以逗号分隔的与经理相关的技能列表。

class Manager(models.Model):
    title = models.CharField(max_length=250)

class Skill(models.Model) :
    skill = models.CharField(max_length=15)

class ManagerSkills(models.Model) :
    manager = models.ForeignKey(Manager,on_delete=models.CASCADE)
    skill = models.ForeignKey(Skill,on_delete=models.CASCADE)

我将如何查询该数据集以检索不同的经理列表,同时还要参考可以在表/网格中输出的相关技能?

1 个答案:

答案 0 :(得分:0)

由于这是多对多关系,因此应这样声明:

class Manager(models.Model):
    skills = models. ManyToManyField("Skill", through="ManagerSkills")
    ...

现在,您可以在模板中循环访问manager.skills.all

(注意,如果ManagerSkills上没有其他任何字段,则可以完全删除该定义以及该字段中的through属性;这使管理员的管理技能更加容易。)