Disclaimer
ΠΡΠΎΠ΅ΠΊΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠ°Π½Π½Π΅ΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ?
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ Π² ΠΈΠ½ΠΏΡΡΠ°Ρ
import graphene
from graphene_t2 import InputObjectType
class AddSomethingInput(InputObjectType):
field1 = graphene.String(required=True)
field2 = graphene.String(required=True)
class EditSomethingInput(AddSomethingInput):
class T2Meta:
required = {
False: '__all__', # ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ
True: ['id'],
}
id = graphene.ID()
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
- Π½Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ
graphene.Argument
- ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΠ»ΡΡΠ΅ΠΉ (
True
,False
) Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅required
Π²Π°ΠΆΠ΅Π½. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ
changes.py
)
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ. ΠΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
import graphene
from graphene_t2 import InputObjectType
from graphene_t2.features.changes import Alter, Deprecate
class SomeInputType(InputObjectType):
class T2Meta:
changes = [
Deprecate('legacy_field1', '03/20', replaced_by='new_field1'),
Deprecate('legacy_field2', '02/20', comment='ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ'),
Alter('new_field1', '03/20', required=True),
]
legacy_field1 = graphene.String()
legacy_field2 = graphene.String()
new_field1 = graphene.String()
ordering.py
)
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° (Π ΠΊΠ»Π°ΡΡΠ΅-Π½ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅ ObjectType
Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ»Π°ΡΡ T2Meta
.
ΠΠ½ΡΡΡΠΈ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
-
can_order_by
- ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΡΠΏΠΈΡΠΎΠΊ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ; -
default_ordering
- Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π΅ΠΉ.
ΠΡΠΈΠΌΠ΅ΡΡ:
class Model1Type(DjangoObjectType):
class T2Meta:
can_order_by = ['id']
class Model2Type(DjangoObjectType):
class T2Meta:
can_order_by = ['id']
default_ordering = 'id' # ΠΈΠ»ΠΈ '-id'
class Model3Type(DjangoObjectType):
class T2Meta:
can_order_by = ['id', 'name', 'date_created']
default_ordering = '-date_created', 'name' # ΠΈΠ»ΠΈ ['-date_created', 'name']
ΠΠ»Π°ΡΡ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΡ graphene_t2.QueriesType
, ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ T2Meta
.
ΠΠ½ΡΡΡΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ enable_ordering_for
.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄Π²Π° Π²ΠΈΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
-
__auto__
- Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ; - ΡΠΏΠΈΡΠΎΠΊ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π΅ΠΉ
Π Π΅ΡΠΎΠ»Π²Π΅ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ **kwargs
ΠΈΠ»ΠΈ sort_by
.
from graphene_t2 import QueriesType
class Query1(QueriesType):
class T2Meta:
enable_ordering_for = '__auto__'
items = graphene.List(Model1Type)
def resolve_items(self, info, **kwargs):
pass
class Query2(QueriesType):
class T2Meta:
enable_ordering_for = ['items']
items = graphene.List(Model1Type)
def resolve_items(self, info, sort_by):
pass
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
- ΠΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π½Π°Π·Π²Π°Π½ΠΈΡ Π² API;
- ΠΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ;