select_related с моделями прокси не работает в Django 1.4.22

У меня есть такая модельная структура:

app1.models

class App(FunkyClassLoadoerMixin, DateMixin):

  user = models.OneToOneField(User, blank=False, null=False, db_index=True, unique=True)
  # some other fields

class DateMixin(models.Model):
    date_added = models.DateTimeField(auto_now_add=True)

app2.models

from app1.models import App as BaseApp

class App(BaseApp)

  class Meta:
    proxy = True

FunkyClassLoadoerMixin - это просто класс, который помогает загружать дочерние классы немного по-другому, но не влияет на их поведение.

Учитывая это, у меня есть такой запрос:

q = SuperStatic.objects.all().select_related('user__app')

(в этом случае объект приложения должен иметь тип app2.models.App)

И когда он оценивается, я получаю эту ошибку:

local/lib/python2.7/site-packages/django/db/models/query.pyc in get_cached_row(row, index_start, using, klass_info, offset)
   1435                 for rel_field, rel_model in rel_obj._meta.get_fields_with_model():
   1436                     if rel_model is not None:
-> 1437                         setattr(rel_obj, rel_field.attname, getattr(obj, rel_field.attname))
   1438                         # populate the field cache for any related object
   1439                         # that has already been retrieved

AttributeError: 'User' object has no attribute 'date_added'

Я не совсем понимаю, почему это происходит. Я просмотрел исходный код Django, и причина, похоже, в том, что эта функция:

rel_obj._meta.get_fields_with_model()

ведет себя по-другому, когда модель является подклассом и игнорирует тот факт, что это прокси-модель.

Я нашел похожий пост:

Но тоже не сильно помогло.

Есть идеи о том, как использовать прокси-класс и избежать этой ошибки?


person danielmaxx    schedule 21.09.2015    source источник
comment
AttributeError упоминает модель пользователя, а не модель приложения. Вы тестировали его без app2.modles.App, я имею в виду напрямую с app1.models? Это работает?. Вдобавок этот парень говорит что-то о введении полей при создании подклассов и работе с прокси stackoverflow.com/a/7669063/344501   -  person jgomo3    schedule 21.09.2015