Найти - Пользователи
Полная версия: Помогите реализовать динамическую фильтрацию
Начало » Django » Помогите реализовать динамическую фильтрацию
1
quix
Задача в
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
plusplus
Можно пример этих параметров? Что такое “GroupPhoto_article_3”? Если просто строка, то в чем проблема? Если же модель с полем, то что это за модель и поле?

Если под динамическими запросами имеется в виду, что заранее неизвестно какие колонки надо фильтровать, то это можно сделать так:
params = {'name_group': 'Some name'}
PhotoGroup.objects.filter(**params)
FishHook
Смотри финт:
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)
quix
Мне нужно бежать на работу, вечером обязательно отвечу. Спасибо.
quix
FishHook
class 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
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)
“GroupPhoto_article_3” это название группы картинок, находится в поле name_group

Задача состоит в том что бы при вызове конкретной статьи о ромашке подключалась группа фотографий посвещенных ромашкам.
В чем заключается моя “динамичность”? - Я хотел во вьюшках
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	
quix
решил

context["art_photo"] = PhotoGroup.objects.filter( article__id = self.kwargs["pk"])
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB