Я использую 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)
Вы думаете, используя этот вид техники является лучшим выбором в этом случае?
Вы не хотите слышать мой ответ. Хотя я буду продвигать всех, кто может сделать это лучше. –
Что касается автоматически созданных таблиц: Syncdb только для Django генерирует таблицы, которые еще не существуют. Поэтому, если таблица, соответствующая имени вашей модели, уже существует, и одна сторона изменяется, ответственность разработчика за достаточную повторную синхронизацию модели и таблицы. Теоретически, вы можете использовать таблицу DB в качестве основного представления, а затем просто вручную настроить модель Django, чтобы «следовать» таблице, когда это необходимо, достаточно, чтобы Django не жаловался. Если делать это таким образом, имеет смысл или нет, является спорным. – WeirdlyCheezy
Для тех, кто утверждает, что хочет получить полный контроль над вашими отношениями, вы, кажется, очень смущены тем, что такое отношения «многие ко многим» (намек: это не отношение «один ко многим», иначе «ForeignKey»). –