![](/img/trans.png)
[英]How to update the model with the foreignkey relation in Graphene-Django Relay?
[英]Graphene-Django nested filters (relay)
我正在嘗試使用graphene-django的DjangoFilterConnectionField
實現以下DjangoFilterConnectionField
:
{
allUsers(username_Icontains: "abc") {
edges {
node {
id
demographics (name_Icontains: "xyz") {
id
name
}
}
}
}
}
我知道在graphene django中,可以使用graphene的List進行嵌套過濾,但是我不確定是否可以使用DjangoFilterConnectionField
解決此問題。
我有以下石墨烯(中繼)架構:
class UserNode(DjangoObjectType):
class Meta:
model = User
interfaces = (Node,)
filter_fields = {
'username': ['exact', 'icontains', 'in'],
}
class DemographicNode(DjangoObjectType):
class Meta:
model = Demographic
interfaces = (Node,)
filter_fields = {
'name': ['icontains'],
}
class Query(ObjectType):
user = Node.Field(UserNode)
all_users = DjangoFilterConnectionField(UserNode)
demographic = Node.Field(DemographicNode)
all_demographics = DjangoFilterConnectionField(DemographicNode)
在文檔中 ,建議在連接的節點上也引入每個過濾器。 所以會像這樣:
class UserNode(DjangoObjectType):
class Meta:
model = User
interfaces = (Node,)
filter_fields = {
'username': ['exact', 'icontains', 'in'],
'demographic__name': ['icontains']
}
但是我認為必須有更好的方法來執行此操作,因為我必須對20個以上的嵌套節點執行此操作。
我認為您在這兩個模型之間有一個OneToOneField,如果的確是這樣,則不能有類似的內容,因為它不合邏輯
想象一下,如果一個用戶有一個人口統計信息,而您檢索了allUsers,那么對於每個用戶,我們都有一個人口統計信息,並且過濾一個人口統計信息是不合邏輯的。 做到這一點的唯一方法是使用UserNode對其進行過濾(如您所說和所做的)
如果您要對用戶模型使用ForeignKey或ManyToManyField,則嵌套過濾就可以工作,然后可以使用單獨的過濾器在用戶中檢索
希望我能向您說明
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.