Форум сайта python.su
Есть абстракная модель, чтобы не плодить код ниже в каждой дочерней моделе, делаю так:
def img(self): self_class_name = eval(self._meta.object_name+'Img') return self_class_name.objects.filter(rel=self)
Офлайн
а разве эту задачу не решает related_name?
Офлайн
related_name задается определено, а здесь, к примеру
class Abstarct(models.Model): def img(self): self_class_name = eval(self._meta.object_name+'Img') return self_class_name.objects.filter(rel=self) class A(Abstarct): title=.... class AImg(models.model): rel = models.FK(A) img = models.ImageField(...) class B(Abstarct): title=.... class BImg(models.model): rel = models.FK(A) img = models.ImageField(...)
Отредактировано info.rss (Окт. 7, 2014 11:34:52)
Офлайн
info.rssНаверно, я чего то не понял
…или я что-то не знаю
self_class_name = eval(self._meta.object_name+'Img')
self_class_name = self.__class__.__name__ + 'Img'
Офлайн
если сделать просто:
self.__class__.__name__ + 'Img'
'str' object has no attribute 'objects'
Офлайн
А, ну да.
Тогда так
from django.db.models.loading import get_model
Офлайн
get_model('app', 'Model')
get_model('Model'+'Img')
Отредактировано info.rss (Окт. 7, 2014 16:15:37)
Офлайн
Вроде два раза показал же
self.__class__.__name__ + 'Img'
Отредактировано FishHook (Окт. 7, 2014 19:40:36)
Офлайн