говоря django использовать целое число как внешний ключ по требованию - PullRequest
0 голосов
/ 11 августа 2011

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

У меня есть центральный репозиторий для хранения значений, таких как:

(some_qualifier_id_1, some_qualifier_id_2, measure_id, value)

Значение является целым числом в базе данных.Однако он может относиться к категориальным данным, и в этом случае я хочу связать их с другой таблицей, которая дает мне дополнительную информацию, такую ​​как строка, которая должна отображаться вместо числа, информация для заказа.

Могу ли я попросить Django создать ссылку на таблицу, используя значение в качестве внешнего ключа иногда ?

Обновление: использование int для получения категории - да, эточто я делаю.Однако смысл уровня модели, насколько я понимаю, теперь заключался в том, чтобы сказать Джанго, как соотносятся таблицы.Простое использование int и использование его для поиска вещей означало бы взламывать его вместе, не сообщая Django о том, что я делаю, что, вероятно, будет означать, что мне придется генерировать SQL вручную, а не использовать слой модели в какой-то момент.Вариант использования: упорядочить значения категорий по некоторому полю упорядочения в таблице категорий.

1 Ответ

1 голос
/ 11 августа 2011

Если значение measure_id семантически является внешним ключом, поэтому каждое значение должно быть индексом для чего-либо в таблице мер, а затем объявить его как таковое, и все будет объединено отдельно.

Если значение measure_id не является внешним ключом, вы можете аннотировать свой набор результатов по требованию, используя

MyModel.objects.filter(**your_filters).extra(select={
  'measure_name': 
    'SELECT measure.name FROM measure WHERE mymodeltable.measure_id = measure.id'
})

Тогда ваши извлеченные объекты будут иметь атрибут 'measure_name' с объединенным столбцом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...