Django: Запросы представления только для чтения без первичного ключа

MongoDB фактически хранит миллины даты как int (64), как предписано http://bsonspec.org/#/specification

Однако, это может становится довольно запутанным, когда вы извлекаете даты, поскольку клиентский драйвер будет создавать экземпляр объекта даты с его собственным местным часовым поясом. Драйвер JavaScript в консоли mongo, безусловно, сделает это.

Итак, если вы заботитесь о своих часовых поясах, убедитесь, что знаете, что это должно быть, когда вы вернетесь. Это не должно иметь большого значения для запросов, поскольку оно все равно будет соответствовать одному и тому же int (64), независимо от того, в какой временной зоне находится объект даты (надеюсь). Но я бы определенно делал запросы с объектами фактической даты (не строки), и пусть драйвер делает свое дело.

23
задан dmi 3 March 2009 в 11:47
поделиться

3 ответа

Когда Вы говорите, что 'Я не имею никакого контроля над представлением, я получаю доступ с Django. Браузер MySQL показывает столбцы там, но никакой первичный ключ'.

я предполагаю, что Вы подразумеваете, что это - таблица прежней версии, и Нельзя добавить или изменить столбцы?

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

Это не имеет значения для Вас все же. Все, в чем Вы нуждаетесь, является столбцом, который, как гарантируют, будет уникален для каждой строки. Набор, что быть 'primary_key = Верно в Вашей модели и Django будет счастливо.

  • существует еще одна возможность, которая была бы проблематична. Если нет никакого столбца, который, как гарантируют, будет уникален тогда, таблица могла бы использовать составные первичные ключи. Это - это определяет, что два столбца, взятые вместе, обеспечат уникальный первичный ключ. Это - совершенно допустимое реляционное моделирование, но unfortunatly, неподдерживаемый Django. В этом случае Вы не можете сделать многого помимо необработанного SQL, если Вы не можете получить другой добавленный столбец.
19
ответ дан Andy Baker 29 November 2019 в 02:16
поделиться

Если действительно существует никакой первичный ключ в представлении, то нет никакого обходного решения.

Django требует, чтобы каждая модель имела точно одно поле primary_key=True.

3
ответ дан webjunkie 29 November 2019 в 02:16
поделиться

Должен был быть автоматически сгенерированный id поле, когда Вы работали syncdb (если не будет никакого первичного ключа, определенного в Вашей модели, то Django вставит AutoField для Вас).

Эта ошибка означает, что Django просит у Вашей базы данных id поле, но ни один не существует. Можно ли выполнить django manage.py dbshell и затем DESCRIBE read_only_view; и отправить ли результат? Это покажет все столбцы, которые находятся в базе данных.

, С другой стороны, можно ли включать образцовое определение, которое Вы исключили? (и подтвердите, что Вы не изменили образцовое определение, так как Вы работали syncdb?)

1
ответ дан obeattie 29 November 2019 в 02:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: