Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2009 13:57:16

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

M2M или "курица и яйцо"

Hi.
вот проблема:
сначала код

class Publication(models.Model):
title = models.CharField(max_length=30)

class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication)
class Publication(models.Model):
title = models.CharField(max_length=30)
article = models.ManyToManyField(Article)


class Article(models.Model):
headline = models.CharField(max_length=100)
В чем принципиальное отличие между двумя моделями если по сути в базе создаются таблицы одинаковой структуры то есть меняются местами поля в таблицах. Ведь если это многие ко многим то по сути нет большого различия куда прописывать models.ManyToManyField(имя модели) и это просто сделано условно, что бы не запутаться. Так ли это? единственное в чем различие проявляется, так это в написании запросов и обращение к моделям через менеджера моделей по типу то back или forward.
Так ли это или я не прав?

Спасибо

Офлайн

#2 Фев. 17, 2009 15:35:55

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

M2M или "курица и яйцо"

Да, фактически разницы нету.
И в одном и в другом случае создаётся промежуточная таблица. Просто первичной принимается та в которой явно задано отношение.
Почти. Просто может быть по-разному реализовано.
Приблизительно так:
1. Первая таблица ссылается на промежуточную как один-к-многим
2. Промежуточная - к второй как один-к-многим
или
1. Первая - к промежуточной как один-к-многим
2. Вторая к промежуточной как один-к-многим

В джанге - надо посмотреть как она реально это делает.

Отредактировано (Фев. 17, 2009 15:36:33)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version