2015-12-19 3 views
0

Я ищу способ хранения строк из другой таблицы в таблице. У меня есть модель под названием Languages и модель под названием Freelancers. То, что я хочу, это хранить языки, с которыми работает фрилансер.Django - столбец содержит список объектов

Я думаю, что если бы были отношения 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

Отношения, которые они будут использовать, - это много-много, многие фрилансеры могут работать на языке, а один фрилансер будет работать со многими языками (не уверен, какой ответ вы ищете) – Sayse

+0

@Sayse Да. Итак, что бы вы сделали с таблицей фрилансеров, чтобы сделать это отношение Многим? –

ответ

4

Это точный случай использования для многих ко многим отношений, которые в Django выражается в ManyToManyField:

languages = models.ManyToManyField(Languages) 

Теперь для каждого фрилансера вы можете сделать freelancer.languages.all() и для каждого языка вы можете сделать language.freelancers_set.all().

Обратите внимание, что в Django обычно используются уникальные имена для моделей: Freelancer и Language - потому что каждый экземпляр относится к одному.

+1

Существует также возможность связанного имени :) – Sayse

Смежные вопросы