Обработка типа последовательного поля PostgreSQL на юге - PullRequest
5 голосов
/ 09 марта 2011

Я использую унаследованную базу данных, которая делает несколько вещей, которые имеют смысл с точки зрения БД, но не знаю, как представить их в Django, чтобы South и Django могли справиться с ними.

У меня естьтаблица деталей с PartCode в качестве ключа У меня есть таблица Vendor с ключом VendorCode

У меня есть таблица PartsVendor с FK для Parts и Vendor, а также дополнительная информация об отношениях.Я использую параметр "through", поэтому он стоит сам по себе, но он использует PartCode + VendorCode в качестве составного ключа, что не поддерживается в Django.Я сталкиваюсь с проблемой только при использовании South или таких функций, как dumpdata, где он хочет видеть первичный ключ.Тем не менее, это довольно большие проблемы.

Мое временное решение было просто добавить поле _id в качестве AutoField и добавить последовательное поле в Postgres, которое прекрасно работает, но затем при использовании South это удушает тот факт, что по умолчанию= False и NOT NULL - это правда.

Я пошел по пути написания пользовательского поля, но это казалось тупиком, поскольку я ничего не меняю в типе поля.

1 Ответ

3 голосов
/ 15 апреля 2011

В PostgreSQL серийный тип на самом деле не является обычным типом.

Последовательность устанавливает целочисленное поле со значением по умолчанию следующего числа в последовательности. Последовательность хранится в другом месте в базе данных (и может быть также создана вручную)

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

Надеюсь, это поможет. :)

...