2013-03-19 4 views
2

У меня есть устаревшая база данных, с которой у меня нет контроля, и я пытаюсь создать для нее модель в Django. Он имеет составной первичный ключ, и я не хочу создавать грязные хаки для его достижения в Django. Каковы последствия простого указания одного из полей в качестве первичного ключа, даже если он не является уникальным.Django Fake Primary Key

Мне нужно просто выполнить простейшее чтение данных. Никакое письмо не связано.

ответ

1

Поскольку вы не собираетесь писать, я полностью проигнорирую проблемы, возникающие при написании.

Однако проблема чтения, вероятно, проявит себя в качестве одного из следующих способов:

  • Связанных моделей (ForeignKey и ManyToManyField) утратят на поиске, если primary_key вы указали не уникальный

  • Model.objects.get(pk=N) потерпит неудачу с MultipleObjectsReturned если вы пытаетесь поиск с первичным ключом

  • Некоторые грани админ не может корректно работать (например, подробные сведения), если первичный ключ, который вы указали, не уникален

Возможно, есть другие, о которых я не думал.

Рассмотрите возможность использования чего-то вроде django-compositekey, который может справиться с проблемами при попытке работать со стандартным поведением django.

+0

Спасибо за ответ. Я закончил использование raw sql, так как это редко выполняемая функция и полностью отключена от моего основного приложения. – wjheng