Tagairt API cuardaighLink to this heading
Tá tagairtí API na cuardaigh sa doiciméad seo, an API Django chun clásal WHERE d'fhiosrúchán bunachar sonraí a thógáil. Chun foghlaim conas* cuardaithe* a úsáid, féach: doc: /topics/db/queries; chun foghlaim conas*cuardaigh nua* a chruthú, féach: doc: /howto/custom-lookups.
Tá dhá chomhpháirt ag an API cuardaigh: a:class: ~Lookups.RegisterLookUpMixin aicme a chláraíonn cuardaigh, agus an:ref: Query Expression API <query-expression>, sraith modhanna a chaithfidh rang a chur i bhfeidhm chun a bheith inchláraithe mar chuardach.
Tá dhá rang bonn ag Django a leanann an API abairt fiosrúcháin agus ón áit a ndíorthaítear gach cuardach tógtha Django:
Is éard atá i léiriú cuardaigh trí chuid:
Cuid réimsí (m.sh. Book.Objects.Filter (author__best_friends__first_name... `);
Athraíonn sé cuid (féadfar é a fhágáil) (m.sh.
__lower__first3chars__reversed);Cuardach (m.sh.
__icontains) a thagann réamhshocraithe go__exactmá fhágtar amach.
API ClárúcháinLink to this heading
Úsáideann Django: class: ~Lookups.RegisterLookUpMixin chun an comhéadan a thabhairt do rang chun cuardaigh a chlárú air féin nó ar a chásanna. Is iad an dá shampla suntasach ná: aicme: ~django.db.models.field, bunaicme gach réimse samhail, agus:class: Transform, bunaicme gach Django a athraíonn.
- class lookups.RegisterLookupMixinLink to this definition
Mixin a chuireann an API cuardaigh i bhfeidhm ar rang.
- classmethod register_lookup(lookup, lookup_name=None)Link to this definition
Cláraíonn sé cuardach nua sa rang nó sa rang. Mar shampla:
DateField.register_lookup(YearExact) User._meta.get_field("date_joined").register_lookup(MonthExact)<model-meta-field-api>cláróidh sé cuardach
YearExact ``ar `DateFieldagusMonthExactcuardach arUser.Date_Joined(is féidir leat:ref: Field Access API `a úsáid chun sampla réimse amháin a aisghabháil). Sáraíonn sé cuardach atá ann cheana leis an ainm céanna. Tá tosaíocht ag cuardaigh atá cláraithe ar chásanna allamuigh seachas na cuardaigh atá cláraithe ar ranganna. Úsáidfear ``lookup_name` don chuardach seo má chuirtear ar fáil, ar shlí eile úsáidfearlookup.lookup_name.
- get_lookup(lookup_name)Link to this definition
Filleann sé an:class: Lookup darb ainm
lookup_nameatá cláraithe sa rang nó sa rang ag brath ar an méid a ghlaonn air. Breathnaíonn an cur i bhfeidhm réamhshocraithe go athshlánach ar gach rang tuismitheora agus seiceálann sé an bhfuil cuardach cláraithe ag duine ar bith darb ainm lookup_name`, agus an chéad chluiche ar ais. Déanfadh cuardach samplaí a shárú ar aon chuardach ranga leis anlookup_namecéanna.
- get_lookups()Link to this definition
Tugann foclóir ar ais de gach ainm cuardaigh atá cláraithe sa rang nó sa rang atá mapáilte chuig rang:class: Lookup.
- get_transform(transform_name)Link to this definition
Tuairisceáin a:class: Transform darb ainm
transform_namecláraithe sa rang nó i gcás ranga. Breathnaíonn an cur i bhfeidhm réamhshocraithe go athshlánach ar gach rang tuismitheora chun a sheiceáil an bhfuil an claochlú cláraithe darb ainm transform_name` ag aon duine, ag tabhairt ar ais an gcéad
<query-expression>Chun rang a bheith ina chuardach, caithfidh sé an: ref: Query Expression API `a leanúint. Leanann: class: `~Lookup agus:class: ~Transform an API seo go nádúrtha.
An API Léiriú FiosrúcháinLink to this heading
Is sraith coitianta modhanna é an API abairt fiosrúcháin a shainmhíníonn ranganna le bheith inúsáidte in abairtí fiosrúcháin chun iad féin a aistriú go nathanna SQL. Is samplaí iad tagairtí díreacha réimse, comhiomláin, agus Transform `` `` `` `` `` ```` ``` Deirtear go leanann rang an API abairt fiosrúcháin nuair a chuireann sé na modhanna seo a leanas i bhfeidhm:
- as_sql(compiler, connection)Link to this definition
Gineann sé an blúire SQL don abairt. Filleann sé tuple
(sql, params), áit gurb é sql` an teaghrán SQL, agus params` an liosta nó an tiúpla de pharaiméadair fiosrúcháin. Is réadSQLcompileré an compiler`, a bhfuil modhcompileáil () ``aige is féidir a úsáid chun nathanna eile a thiomsú. Is é an `nascan nasc a úsáidtear chun an ceist a fhorghníomhú.Is gnách go mbíonn glaoch ar
expression.as_sql () ``mícheart - ina ionad sin ba chóir ``compiler.compiler.compilation (focal)a úsáid. Tabharfaidh an modh `compiler.compiler.compilation () ``aire do mhodhanna an abairt a ghlaoch ar mhodhanna sonracha don dhíoltóir.Féadfar argóintí eochairfhocal saincheaptha a shainiú ar an modh seo más dóichí go mbeidh ar mhodhanna nó fo-aicmí as_vendorname () `sonraí a sholáthar chun giniúint an teaghrán SQL a shárú. Féach: Meth: `Func.as_sql mar shampla úsáid.
- as_vendorname(compiler, connection)Link to this definition
Oibríonn sé cosúil le modh as_sql () `. Nuair a thiomsaíonn abairt ag
compiler.compiler () ``, déanfaidh Django iarracht glaoch ar ``as_vendorname ()ar dtús, áit a bhfuil vendorname` ainm díoltóra an chúltaca a úsáidtear chun an cheist a fhorghníomhú. Tá anvendornamear cheann depostgresql,oracle, sqlite`, nómysqlle haghaidh cúltaca ionsuite Django.
- get_lookup(lookup_name)Link to this definition
Ní mór an cuardach darb ainm
lookup_namea thabhairt ar ais. Mar shampla, trí ``self.output_field.get_lookup (lookup_name) ``a thabhairt ar ais.
- get_transform(transform_name)Link to this definition
Ní mór an cuardach darb ainm
transform_namea thabhairt ar ais. Mar shampla, trí ``self.output_field.get_transformer (transform_name) ``a thabhairt ar ais.
- output_fieldLink to this definition
Sainmhíníonn an cineál ranga a chuirtear ar ais leis an modh ``get_lookup () ``. Caithfidh sé a: class: ~django.db.models.field sampla.
Tagairt TransformLink to this heading
- class TransformLink to this definition
Is aicme cineálach é
Transformchun claochlú allamuigh a chur i bhfeidhm. Sampla suntasach is ea__yeara athraíonnDataFieldgoComhlánField.<expression><transformation>Is é
__`` Transforma úsáid i léiriú cuardaigh (m.sh. `dáta__bliain).This class follows the Query Expression API, which implies that you can use
<expression>__<transform1>__<transform2>. It's a specialized Func() expression that only accepts one argument. It can also be used on the right hand side of a filter or directly as an annotation.- bilateralLink to this definition
Boolean a léiríonn an chóir go mbeadh feidhm ag an gclaochlú seo maidir le lhs` agus rhs` araon. Cuirfear claochlú déthaobhacha i bhfeidhm ar
rhssan ord céanna agus atá le feiceáil sa léiriú cuardaigh. De réir réamhshocraithe tá sé socraithe goFalse. Mar shampla úsáid, féach: doc: /howto/custom-lookups.
- lhsLink to this definition
An taobh clé - cad atá á athrú. <query-expression>Caithfidh sé an: ref: `Fiosraithe Expression API `a leanúint.
- lookup_nameLink to this definition
Ainm an chuardaigh, a úsáidtear chun é a aithint ar nathanna fiosrúcháin a pháirseáil. Ní féidir leis an sreang
"__"a bheith ann.
- output_fieldLink to this definition
Sainmhíníonn an rang a aschuireann an claochlú seo Caithfidh sé a: class: ~django.db.models.field sampla. De réir réamhshocraithe tá sé mar an gcéanna lena lhs.output_field`.
Tagairt `LookupLink to this heading
- class LookupLink to this definition
Is aicme cineálach é
Lookupchun cuardaigh a chur i bhfeidhm. Is léiriú fiosrúcháin é cuardach le taobh clé, :attr: lhs; taobh ar dheis, :attr: rhs; aguslookup_namea úsáidtear chun comparáid boolean a tháirgeadh idir lhs` agus rhs` marlhs i rhsnólhs > rhs.<lookup_name><rhs>Is é
<lhs>__ =an príomh-nótaí chun cuardach a úsáid i abairt. Is féidir cuardaigh a úsáid go díreach i scagairí ``QuerySet`:Book.objects.filter(LessThan(F("word_count"), 7500))... nó anótaí:
Book.objects.annotate(is_short_story=LessThan(F("word_count"), 7500))- lhsLink to this definition
An taobh clé - cad atá á breathnú suas. <query-expression>De ghnáth leanann an réad an:ref: `Fiosraithe Expression API `. D'fhéadfadh sé a bheith ina luach simplí freisin.
- rhsLink to this definition
An taobh na láimhe deise - cad atá lhs` á chur i gcomparáid ina choinne. Is féidir é a bheith ina luach simplí, nó rud éigin a thiomsaíonn isteach i SQL, de ghnáth rud
F () ``nó ``QuerySet.
- lookup_nameLink to this definition
Ainm an chuardaigh seo, a úsáidtear chun é a aithint ar nathanna fiosrúcháin a pháirseáil. Ní féidir leis an sreang
"__"a bheith ann.
- prepare_rhsLink to this definition
Réamhshocraithe go
True. Nuair: attr: Is luach simplí é rhs, :attr: prepare_rhs cinneann an chóir é a ullmhú le húsáid mar pharaiméadar i bhfiosrúchán. <django.db.models.Value>D'fhonn é sin a dhéanamh, tugtarlhs.output_field.get_prep_value () ``má shainmhínítear, nó tá `rhsfillte in:class: `Value () `ar shlí eile.
- process_lhs(compiler, connection, lhs=None)Link to this definition
Tugann sé tuple
(lhs_string, lhs_params)ar ais agcompiler.compiler.compiler (lhs) ``. Is féidir an modh seo a shárú chun an chaoi a ndéantar an `lhsa phróiseáil a thiúnadh.Is réad
sqlcompileré compiler`, le húsáid cosúil lecompiler.compiler.compiler (lhs) ``chun `lhsa thiomsú. Is féidir annasca úsáid chun SQL sonrach don díoltóir a thiomsú. Mura bhfuillhsNone, bain úsáid as mar an lhs` próiseáilte in ionadself.lhs.
- process_rhs(compiler, connection)Link to this definition
Iompraíonn sé ar an mbealach céanna le: meth: process_lhs, don taobh na láimhe deise.