Django - 列包含对象列表

时间:2015-12-19 17:38:32

标签: python django database django-models many-to-many

我正在寻找一种方法来存储表中另一个表的行。我有一个名为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的新手,我很感激任何建议。

1 个答案:

答案 0 :(得分:4)

这是多对多关系的确切用例,在Django中用ManyToManyField表示:

languages = models.ManyToManyField(Languages)

现在,对于每个自由职业者,您可以freelancer.languages.all()使用每种语言language.freelancers_set.all()

请注意,在Django中,通常使用单数名称作为模型:自由职业者和语言 - 因为每个实例都指的是一个。