Išspręsta: django modelio užklausos

Viena iš pagrindinių „Django“ modelio užklausų problemų yra ta, kad jos gali būti labai išsamios. Pavyzdžiui, jei norite rasti visus tam tikro tinklaraščio straipsnius, turėsite naudoti tokią užklausą:

straipsniai = Blog.objects.all()

Jei norite rasti visus straipsnius, kurie buvo paskelbti per pastarąjį mėnesį, turėtumėte naudoti tokią užklausą:

articles_published_in_the_last_month = Blog.objects.filter(published=True)

There are a number of ways to query a Django model. The simplest way is to use the Model.objects.all() method, which will return all objects for that model.

If you want to filter the queryset, you can use the Model.objects.filter(**kwargs) method, where kwargs is a dictionary of field names and values to filter on. For example, if you only wanted objects with a certain value for the 'name' field, you could do:

Model.objects.filter(name='value')

If you want to get a single object from the queryset, you can use the Model.objects.get(**kwargs) method, which will return the first object that matches the given criteria. For example, if you wanted to get an object with a particular 'id' value:

Model.objects.get(id=1)

Jei norite užsisakyti užklausų rinkinį, galite naudoti metodą Model.objects.order_by(lauko_pavadinimas), kuris surikiuos užklausų rinkinį pagal pateiktą lauką didėjančia tvarka. Taip pat galite naudoti priešdėlį „-“ ir rūšiuoti mažėjančia tvarka:

Model.objects.order_by('-name')

Kas yra QuerySet

„QuerySet“ yra susijusių modelių, kurių užklausą galima pateikti kartu, rinkinys. Tai patogus būdas sugrupuoti modelius, kad galėtumėte lengvai juos pateikti kaip vienetą.

Užklausos išraiškos

Užklausos išraiška yra galingas būdas filtruoti duomenis Django. Tai panašu į WHERE sąlygą SQL užklausoje, tačiau ją galima naudoti su bet kokiu modelio objektu.

Pavyzdžiui, galite naudoti užklausos išraišką, kad surastumėte visus straipsnius, kurių pavadinimai prasideda žodžiais „Kaip padaryti“:

articles.filter(title__startswith='Kaip')

Užklausų rinkinio API nuoroda

„QuerySet“ API suteikia galimybę pateikti užklausą dėl modelio laukų ir susijusių duomenų. API modeliuojama pagal SQL SELECT sakinį ir leidžia nurodyti, kuriuos laukus norite gauti, kokia tvarka norite juos grąžinti ir kiek duomenų eilučių norite grąžinti.

Norėdami naudoti QuerySet API, pirmiausia sukurkite modelio objektą:

iš django.db importuoti modelius klasė ManoModelis(modeliai.Modelis): pavadinimas = models.CharField(max_length=30)

Tada sukurkite užklausos objektą:

query = MyModel.objects.create_query() query.select('vardas').order_by('-name')

Susijusios naujienos:

Palikite komentarą