6. Как добавить модель для представления базы данных?¶
Представление базы данных - это объект в базе данных с возможностью поиска, который определяется запросом. Хотя представление не хранит данные, некоторые называют представления «виртуальными таблицами», вы можете запрашивать представление так же, как и таблицу. Представление может объединять данные из двух или более таблиц, используя соединения, а также просто содержать подмножество информации. Это делает их удобными для абстрагирования, или скрытия, сложных запросов.
В нашем SqliteStuio мы видим 26 таблиц и ни одного представления.
Давайте создадим простое представление.:
create view temp_user as
select id, first_name from auth_user;
После создания представления мы видим 26 таблиц и 1 представление.
Мы можем создать связанную с ней модель в нашем приложении, используя managed = False
и << 1 >>>:
class TempUser(models.Model):
first_name = models.CharField(max_length=100)
class Meta:
managed = False
db_table = "temp_user"
// We can query the newly created view similar to what we do for any table.
>>> TempUser.objects.all().values()
<QuerySet [{'first_name': 'Yash', 'id': 1}, {'first_name': 'John', 'id': 2}, {'first_name': 'Ricky', 'id': 3}, {'first_name': 'Sharukh', 'id': 4}, {'first_name': 'Ritesh', 'id': 5}, {'first_name': 'Billy', 'id': 6}, {'first_name': 'Radha', 'id': 7}, {'first_name': 'Raghu', 'id': 9}, {'first_name': 'Rishabh', 'id': 10}, {'first_name': 'John', 'id': 11}, {'first_name': 'Paul', 'id': 12}, {'first_name': 'Johny', 'id': 13}, {'first_name': 'Alien', 'id': 14}]>
// You cannot insert new reord in a view.
>>> TempUser.objects.create(first_name='Radhika', id=15)
Traceback (most recent call last):
...
django.db.utils.OperationalError: cannot modify temp_user because it is a view
Для получения информации о работе союза посетите сайт: http://books.agiliq.com/projects/django-admin-cookbook/en/latest/database_view.html?highlight=view