我正在寻找一种方法来存储表中另一个表的行。我有一个名为Languages
的模型和名为Freelancers
的模型。我想要的是存储自由职业者使用的语言。
我认为,如果存在关系Many to One
,则只会language = models.ForeignKey(Languages)
。问题是,一个自由职业者可以知道多种语言。
以下是这些模型:
class Languages(models.Model):
language = models.CharField(max_length=100)
language_shortcut = models.CharField(max_length=3)
price_per_word = models.FloatField()
class Freelancers(models.Model):
nickname = models.CharField(max_length=30)
# languages = models.ForeignKey(Languages) # This is incorrect
# languages = list(models.ForeignKey....) # I'm looking for something like this...
由于我是Django的新手,我很感激任何建议。
答案 0 :(得分:4)
这是多对多关系的确切用例,在Django中用ManyToManyField表示:
languages = models.ManyToManyField(Languages)
现在,对于每个自由职业者,您可以freelancer.languages.all()
使用每种语言language.freelancers_set.all()
。
请注意,在Django中,通常使用单数名称作为模型:自由职业者和语言 - 因为每个实例都指的是一个。