@@ -316,3 +316,63 @@ def resolve_reporters(_, info):
316
316
317
317
assert not result .errors
318
318
assert result .data == {"reporters" : [{"firstName" : "Debra" },]}
319
+
320
+ def test_get_queryset_foreign_key (self ):
321
+ class Article (DjangoObjectType ):
322
+ class Meta :
323
+ model = ArticleModel
324
+ fields = ("headline" ,)
325
+
326
+ @classmethod
327
+ def get_queryset (cls , queryset , info ):
328
+ # Rose tinted glasses
329
+ return queryset .exclude (headline__contains = "Not so good" )
330
+
331
+ class Reporter (DjangoObjectType ):
332
+ class Meta :
333
+ model = ReporterModel
334
+ fields = ("first_name" , "articles" )
335
+
336
+ class Query (ObjectType ):
337
+ reporters = DjangoListField (Reporter )
338
+
339
+ schema = Schema (query = Query )
340
+
341
+ query = """
342
+ query {
343
+ reporters {
344
+ firstName
345
+ articles {
346
+ headline
347
+ }
348
+ }
349
+ }
350
+ """
351
+
352
+ r1 = ReporterModel .objects .create (first_name = "Tara" , last_name = "West" )
353
+ ReporterModel .objects .create (first_name = "Debra" , last_name = "Payne" )
354
+
355
+ ArticleModel .objects .create (
356
+ headline = "Amazing news" ,
357
+ reporter = r1 ,
358
+ pub_date = datetime .date .today (),
359
+ pub_date_time = datetime .datetime .now (),
360
+ editor = r1 ,
361
+ )
362
+ ArticleModel .objects .create (
363
+ headline = "Not so good news" ,
364
+ reporter = r1 ,
365
+ pub_date = datetime .date .today (),
366
+ pub_date_time = datetime .datetime .now (),
367
+ editor = r1 ,
368
+ )
369
+
370
+ result = schema .execute (query )
371
+
372
+ assert not result .errors
373
+ assert result .data == {
374
+ "reporters" : [
375
+ {"firstName" : "Tara" , "articles" : [{"headline" : "Amazing news" },],},
376
+ {"firstName" : "Debra" , "articles" : []},
377
+ ]
378
+ }
0 commit comments