I have inserted a definition for a view in $template_dir/sql/$someTableName.sql file. (create or replace view) so every time I run syncdb
, the db views are created.
Can I create in models.py a python class which accesses that view?
Is it better practice to just use python's raw sql functionality instead?
---EDIT---
Another problem I have is that the view doesn't have a primary key, but django seems to be assuming there will be one because I get an error caught an exception while rendering: (1054, "Unknown column 'appName_currentleagues.id' in 'field list'")
But I don't have such a member defined:
Class CurrentLeagues(models.Model):
League = models.ForeignKey(League)
class Meta:
managed = False
So my guess is that django reasonably sees that I don't define a primary key in the CurrentLeagues class, so Django assumes there's one called id
. Is there a way to tell Django that there is no primary key (since this is actually a view), or is that not even my problem?
See Unmanaged models
You define the model as usual and add managed = False
to the meta options:
class MyModel(models.Model):
...
class Meta:
managed = False