Форум сайта python.su
Задача в
context["art_photo"]
class ArticleDetail(DetailView): #queryset = Article.objects.all() model = Article template_name = "blog/article_detail.html" context_object_name = "articledetail" #def __init__(self): # self.filt = PhotoGroup().name_group def get_context_data(self, **kwargs): context = super(ArticleDetail, self).get_context_data(**kwargs) context["ph"] = Profile.objects.get(id = self.kwargs["pk"]) context["art_photo"] = PhotoGroup.objects.filter(name_group = "Изменяемые параметры" ) # context["art_photo"] = PhotoGroup.objects.filter(name_group = "GroupPhoto_article_3") #context["ph"] = self.for_photo return context
class PhotoGroup(models.Model): name_group = models.CharField(max_length=100) tag_group = models.ManyToManyField(Photo) def __unicode__(self): return "%s " % self.name_group
Отредактировано quix (Май 6, 2016 06:07:40)
Офлайн
Можно пример этих параметров? Что такое “GroupPhoto_article_3”? Если просто строка, то в чем проблема? Если же модель с полем, то что это за модель и поле?
Если под динамическими запросами имеется в виду, что заранее неизвестно какие колонки надо фильтровать, то это можно сделать так:
params = {'name_group': 'Some name'} PhotoGroup.objects.filter(**params)
Офлайн
Смотри финт:
class FilterForm(forms.Form): name_group__icontains = CharField() ..... def get_context_data(self, **kwargs): context = super(ArticleDetail, self).get_context_data(**kwargs) filter_form = FilterForm(self.request.GET) context["art_photo"] = PhotoGroup.objects.all() if filter_form.is_valid(): context["art_photo"] = context["art_photo"].filter(**filter_form.cleaned_data)
Офлайн
Мне нужно бежать на работу, вечером обязательно отвечу. Спасибо.
Офлайн
FishHookclass FilterForm(forms.Form): #определяем класс формы name_group__icontains = CharField() # определяем инстанс класса и сразу __ делаем его всеядным к регистру #вернемся к моему контексту def get_context_data(self, **kwargs): # поскольку **kwargs - функция принимает именованные аргументы и ссылку на инстанс context = super(ArticleDetail, self).get_context_data(**kwargs) # крутячая функция super (забыл что она делает) :) filter_form = FilterForm(self.request.GET) context["art_photo"] = PhotoGroup.objects.all() # выбираем все объекты PhotoGroup if filter_form.is_valid(): # проверка формы на валидность context["art_photo"] = context["art_photo"].filter(**filter_form.cleaned_data) #переопределяем уже отфильтрованные по параметру из формы нормализованные данные
Очень здоровский пример!!!
траблу я пока не решил, так как поставленный мною вопрос был не полностью раскрыт изначально.
Вернусь через время.
Всем огромнейшее спасибо!!!
Отредактировано quix (Май 8, 2016 06:44:49)
Офлайн
plusplus
Можно пример этих параметров? Что такое “GroupPhoto_article_3”? Если просто строка, то в чем проблема? Если же модель с полем, то что это за модель и поле?Если под динамическими запросами имеется в виду, что заранее неизвестно какие колонки надо фильтровать, то это можно сделать так:
class Photo(models.Model): ava = models.ImageField(upload_to = "ava_person") img_art = ImageSpecField(source = "ava", processors = [ResizeToFill(200, 200)], format = "JPEG", options = {"quality": 60}) pfototag = models.SlugField(max_length=100)
class PhotoGroup(models.Model): name_group = models.CharField(max_length=100) tag_group = models.ManyToManyField(Photo)
class Article(models.Model): photo = models.ForeignKey(PhotoGroup)
def __init__(self): self.gt_filt_data = PhotoGroup() def get_context_data(self, **kwargs): context = super(ArticleDetail, self).get_context_data(**kwargs) context["data"] = self.gt_filt_data.name_group context["art_photo"] = PhotoGroup.objects.filter(name_group = self.gt_filt_data.name_group) return context
Офлайн
решил
context["art_photo"] = PhotoGroup.objects.filter( article__id = self.kwargs["pk"])
Офлайн