在django ORM中解决这个用例的最好方法



我有一个用例,有一个用户表和一个技能表。

一个用户可以拥有多个技能,例如writing , scalping , coding等,最多可达50

那么保存它的最好方法是什么?从我的搜索,我得出结论,许多领域是最好的这里像这样

class Skill(models.Model):
name = models.CharField(max_length=50)
class User(models.Model):
skills = models.ManyToManyField(Skill, blank=True, null=True)

但是在获得数据的同时,我必须反向查询,就像获得所有具有特定技能的用户一样,例如writing。不管我走对了还是走错了。如有任何帮助,不胜感激

我也会使用多对多关系,但我将定义一个直通模型,因为这可以为关系提供更大的灵活性。你可以在这里阅读:https://docs.djangoproject.com/en/4.0/topics/db/models/#extra-fields-on-many-to-many-relationships

我的代码可能是这样的:

class Skill(models.Model):
name = models.CharField(max_length=50)
class User(models.Model):
skills = models.ManyToManyField(Skill, through="UserSkillRelation")
class UserSkillRelation(models.Model):
skill = models.ForeignKey(Skill, on_delete=models.CASCADE)
user = models.ForeignKey(Skill, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

这也允许你在关系中添加字段。

相关内容

  • 没有找到相关文章

最新更新