Я вставил определение для вида в файл $ template_dir/sql/$ someTableName.sql. (создайте или замените представление), поэтому каждый раз, когда я запускаю syncdb
, создаются представления db.создание модели django для существующей базы данных/sql view?
Могу ли я создать в models.py класс python, который обращается к этому представлению?
Лучше ли использовать вместо этого только функциональность sql-кода python?
--- EDIT ---
Другая проблема у меня есть, что точка зрения не имеет первичного ключа, но Джанго, кажется, предполагая, что будет один, потому что я получаю ошибку caught an exception while rendering: (1054, "Unknown column 'appName_currentleagues.id' in 'field list'")
Но дон «т иметь определенный такой член:
Class CurrentLeagues(models.Model):
League = models.ForeignKey(League)
class Meta:
managed = False
так что я думаю, что Джанго достаточно видит, что я не определить первичный ключ в классе CurrentLeagues, поэтому Django предполагает, что есть одна называется id
. Есть ли способ сказать Django, что нет первичного ключа (поскольку это на самом деле представление), или это даже не моя проблема?
Но как мне связать этот класс python с представлением mysql, с которым я хочу связать? Нужно ли явно вводить члены «MyModel» правильно, чтобы соответствовать написанию полей в представлении, и он просто работает автоматически? –
Мне просто нужно написать представление как 'appName_classname', потому что это правописание, которое django автоматически использует для каждого экземпляра модели python. –
Вы можете вручную передать имя представления, используя опцию 'db_table' meta: http://docs.djangoproject.com/en/dev/ref/models/options/#db-table. Да, вам нужно будет ввести имена полей, иначе django не будет иметь версию ваших моделей на python. Если вы хотите уменьшить количество ввода, вы можете использовать сложную сеть абстрактных моделей и наследования, но я бы поставил вещи как можно проще, даже если это означает небольшое повторение. –