2010-02-10 3 views
0

У меня есть 2 модели, и я хочу, любые экземпляры класса 1 в классе 2, как это сделать в моделях django ... и я попытался использовать многотоновое поле, но проблема в том, что я добавляю новый объект у этого будет многоголовое поле уже там (чего я не хочу) ... любая идея, как я это делаю ...от одного до многих отношений

ответ

1

Отношения друг к другу - это всего лишь ForeignKey в другом направлении.

+0

но проблема в том, что я хочу иметь несколько экземпляров класса 1 в классе 2 .... его невозможно с помощью foreignkey !! .. – ramsin

+0

Да, это так. Сделайте 'ForeignKey' от' Model1' до 'Model2'. Model2 получает атрибут 'model1_set', который является менеджером. –

+0

может у пожалуйста, дайте пример я запутался .... у меня есть класс 1 имя = models.Char ..... класс 2 mod1 = models.Foregign ........ ... здесь я хочу несколько экземпляров mod1 ... как мне это сделать – ramsin

0

Одна из причин, по которой у вас могут возникнуть проблемы, - это несколько отчасти обратные в реляционных базах данных от того, что они есть в объектах. Похоже, вы хотите, чтобы один экземпляр класса2 содержал список class1. То, как вы это делаете, - иметь ForeignKey в классе1, который ссылается на класс2. Если вы не знакомы с реляционными базами данных, похоже, что класс 2 должен ссылаться на класс1, но в реляционном мире, когда у вас есть «один-ко-многим», многим нужно ссылаться на сингл.

Например, у вас есть структура папок. «Обычным» способом, о котором вы думаете, является то, что у вас есть папка, и в этой папке есть несколько файлов. Но в реляционной базе данных папка не имеет списка файлов. На самом деле ничто не может (напрямую) иметь список чего-либо еще. То, что вы делаете, - это то, что каждый файл будет знать идентификатор папки, в которой они находятся. Теперь, когда у вас есть папка, и вы хотите найти файлы, находящиеся в ней, то вы делаете, это смотреть на все файлы и находить их которые имеют эту папку как контейнер.

+0

Похоже, вы хотите, чтобы один экземпляр класса2 содержал список class1 --- именно то, что я хочу do .... но каждый раз это должно быть свежие дополнения ... по умолчанию существующие объекты отображаются, когда я пытался использовать manytomany realtion. – ramsin

+0

Используйте ForeignKey, как сказал Игнасио. Проблема в том, что вы пытаетесь поместить ForeignKey в Class2. Это неверно. ForeignKey должен быть в классе1, который указывает на один класс2. Это даст вам один-ко-многим между классами 2 и классом1, класс1 содержит ровно 1 класс2, а class2 будет содержать (косвенно) много классов1. Django позаботится об этой магии для вас и автоматически создаст список class1 на class2, но поймет, что это фактически не существует в виде списка в базе данных. Список чего-то для 1 строки базы данных невозможно. Когда требуется ManyToMany, создается 3-я таблица – Davy8

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