Django-opgeslagen-queryset

paailable django queryset
Download nu

Django-opgeslagen-queryset Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • GPL v3
  • Prijs:
  • FREE
  • Naam uitgever:
  • Denis Mishchishin
  • Uitgever website:
  • http://github.com/denz/

Django-opgeslagen-queryset Tags


Django-opgeslagen-queryset Beschrijving

Django-opgeslagen-queryset is een aanhoudende weergave van Django-queryset '. Probleem met een eenvoudige zoekfunctionaliteit zonder aangepaste SQL of impliciete markers / ID's / indexen opslaan.ExampleTRIVIALE VOORBEELDVROM opgeslagen.Queryset Import FilterQuerySetQ = FilterQuerySet (' Q (Text__Ilicontains = "Eometext ")", 'SOMAPP.SOMEMODEL') Q.Objects.all () #outputs Allloads (Dumps (q)). Objects.all () #Same FUNCTIONEIMPLE met literals # Define Default LiteralsQ0 = FilterquerySet ('Q (Text__Ilicontains = " {Literal_Text} ") ',' Sommep.somemodel ', literal_parameter ='" sometwoord "') # nieuwe queryset met verschillende` literal_text` waardeq1 = q0.literal (literal_Text =' "sommigen_other_text" '). Objects.all () # Letterjes zijn geparseerd met Safe `AST.LITERAL_EVAL 'en kunnen worden afkomstig van gebruikersinvoer # Q1 kunnen worden ingelegd en dus kan de zoekopdracht door de gebruiker worden opgeslagen in DB # indien om een andere` filterqueryset' voor elke gebruiker te houden. LOADS (Dumps (Q1)) .Objects.all () #Same resulterenmeer complex - gebruikerspecifieke zoekopdracht met gerelateerde velden en persistente parametersmodels.py: from django.db imp ORT ModelsVrom Django.Contrib.auth.Models Import UserFrom Opslaan.QuerySet Import FilterQuerySetClass RelatedModel (Models.Model): Gebruiker = modellen.ForeAndkey (gebruiker, blanco = true, null = true) #OR Misschien MTM-beoordeling = modellen.integerfield () Klasse Somemodel (Models.model): Text = Models.charfield () Related_field = Models.ForeNeKey (RelaterModel) views.py:search_query = 'q (Text__Ilicontains = "{Search}") \ Q (Related_field__in = Related.Filter (beoordeling__GTE = {min_related_rating}))) 'Default_search_Queryset = \ filterqueryset (query,' somApp.somemodel ', min_related_rating =' 3 ') Def Bekijk (aanvraag): zo niet aanvraag.user.is_anonymous (): Profiel = aanvraag.User.get_profile ( ) Query = loads (profiel.search) \ IF Profiel.Search \ else standaard_search_Queryset) # query.objects.all () zal een uitzondering opbrengen - #We moeten `gerelateerde" variabele en `zoeken" Letterlijk gerelateerd = RelatedModel.Objects te definiëren .Filter (Q (User = Request.user) | q (user__in = )) Def Store_Search (query): Profiel.search = Dumps (query) Profiel.Save () else: query = defa Ult_search_Queryset gerelateerd = RelatedModel.Objects.filter (Q (user__in = )) Def Store_Search (query): Pass #define Evaluated Variabelen actueel_query = query (gerelateerd = gerelateerd) #Alert: Nooit doorgeven gebruikersinvoer als geëvalueerde variabelen #use literals voor dat als aanvraag.Request.get ('Search', geen): #BONUS: Previus Zoeken opgeslagen te actual_query.literals (Search = Request.Request ) indien aanvraag.Request. ', Geen): #Override Min_rating indien nodig daadwerkelijk_query.literals (min_related_rating = int (aanvraag.Request ))))))))))))))))))) Kunnen we het samen opslaan met laatste zoekreeks en `min_related_rating'-parameter store_search (actual_query) #Notice . `gerelateerd` en geëvalueerde variabelen worden niet opgeslagen #zo de volgende keer dat we vragen moeten bellen met` gerelateerd` Retourneer render_to_response ('Search.html', {'items': actual_query.objects}) Product-startpagina


Django-opgeslagen-queryset Gerelateerde software