Я использую Django 1.9 и django.contrib.gis
с Area
модель, которая имеет огромный MultiPolygonField
: ГИСКак игнорировать загрузку огромных полей в django admin list_display?
# models.py
from django.contrib.gis.db import models as gis_models
class Area(gis_models.Model):
area_color = gis_models.IntegerField()
mpoly = gis_models.MultiPolygonField(srid=4326)
class Meta:
verbose_name = 'Area'
verbose_name_plural = 'Areas'
У меня есть соответствующий AreaAdmin
класс по управлению Area
S внутри Джанго администратора:
# admin.py
from django.contrib.gis import admin as gis_admin
class AreaAdmin(gis_admin.OSMGeoAdmin):
map_width = 800
map_height = 600
modifiable = False
list_display = ['area_color', ]
exclude = ['mpoly', ]
gis_admin.site.register(Area, AreaAdmin)
Проблема в том, что, хотя я использую list_display
, который не содержит mpoly
и атрибут exclude
, чтобы предотвратить его отображение в представлении формы, при отображении вида списка он по-прежнему выбирает все t он поля из базы данных и загружает его в память. Поскольку mpoly
настолько велика, у меня возникают случайные ошибки (segfault, обработанный убит, ...), и для отображения списка требуется много минут, чтобы отобразить некоторые простые целочисленные поля ...
Есть ли способ рассказать django не загружать mpoly
в память, чтобы полностью игнорировать его в запросе базы данных, чтобы он быстро загружался? Я ничего не нашел в документации, кроме exclude
, чтобы дистанционно достичь этого. Я спрашиваю здесь, если я что-то упустил.
Благодарим за помощь.
Удивительно! Именно то, что мне нужно, и не удалось найти в процессе поиска. Благодаря ! – achedeuzot