2012-10-06 2 views
0

Я использую django для моего проекта, все это хорошо, за исключением обработки таблиц.Модели Django и созданные автоматически таблицы

Автосохраненные таблицы отлично подходят для людей, которые не хотят делать необработанные запросы и не заинтересованы в добавлении и удалении столбцов. Но для меня я хочу иметь полный контроль над своей базой данных.

class Partner(models.Model): 
    software = models.ManyToManyField(Software) 

Это создает:

  • partner_partner
  • partner_partner_software

Второй стол для обработки manytomany отношения. Такое поведение осложняет мне наблюдение и понимание структуры таблицы. Я думаю, что это позволяет мне сделать это:

partner = Partner.objects.get(pk=1) 
software = partner.software 

, если я не использую manytomany как отношения и вместо выше использования,

partner = Partner.objects.get(pk=1) 
software = Software.objects.get(name = partner.software) 

Вы думаете, используя этот вид техники является лучшим выбором в этом случае?

+2

Вы не хотите слышать мой ответ. Хотя я буду продвигать всех, кто может сделать это лучше. –

+0

Что касается автоматически созданных таблиц: Syncdb только для Django генерирует таблицы, которые еще не существуют. Поэтому, если таблица, соответствующая имени вашей модели, уже существует, и одна сторона изменяется, ответственность разработчика за достаточную повторную синхронизацию модели и таблицы. Теоретически, вы можете использовать таблицу DB в качестве основного представления, а затем просто вручную настроить модель Django, чтобы «следовать» таблице, когда это необходимо, достаточно, чтобы Django не жаловался. Если делать это таким образом, имеет смысл или нет, является спорным. – WeirdlyCheezy

+1

Для тех, кто утверждает, что хочет получить полный контроль над вашими отношениями, вы, кажется, очень смущены тем, что такое отношения «многие ко многим» (намек: это не отношение «один ко многим», иначе «ForeignKey»). –

ответ

-1

Я использую Django, и у меня есть полный контроль над моими таблицами. Я просто установил его таким образом, чтобы Django обрабатывал CMS и CodeIgniter обрабатывать сайт.

+0

Поле manytomany просто создает partner_partner_software как таблицы в моем примере и имеет такой контент. '1', '1', '1' '2', '2', '2' Как вам управлять? просто избегайте использования этих отношений? – durdenk

+0

Да, я полностью избегаю этого. Я создаю свои таблицы в MySQL, а затем импортирую их в Django. – Kenzo

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