@@ -334,7 +334,7 @@ class Meta:
334334class ProjectListSerializer (serializers .ModelSerializer ):
335335 views_count = serializers .SerializerMethodField (method_name = "count_views" )
336336 short_description = serializers .SerializerMethodField ()
337- partner_program_id = serializers .SerializerMethodField ()
337+ partner_program = serializers .SerializerMethodField ()
338338
339339 @classmethod
340340 def count_views (cls , project ):
@@ -345,12 +345,23 @@ def get_short_description(cls, project):
345345 return project .get_short_description ()
346346
347347 @staticmethod
348- def get_partner_program_id (project ):
348+ def _get_program_link (project ):
349349 links_cache = getattr (project , "_prefetched_objects_cache" , {}).get (
350350 "program_links"
351351 )
352- link = links_cache [0 ] if links_cache else project .program_links .first ()
353- return link .partner_program_id if link else None
352+ if links_cache :
353+ return links_cache [0 ]
354+ return project .program_links .select_related ("partner_program" ).first ()
355+
356+ @classmethod
357+ def get_partner_program (cls , project ):
358+ link = cls ._get_program_link (project )
359+ if link and link .partner_program :
360+ return {
361+ "id" : link .partner_program_id ,
362+ "name" : link .partner_program .name ,
363+ }
364+ return None
354365
355366 class Meta :
356367 model = Project
@@ -363,10 +374,15 @@ class Meta:
363374 "industry" ,
364375 "views_count" ,
365376 "is_company" ,
366- "partner_program_id " ,
377+ "partner_program " ,
367378 ]
368379
369- read_only_fields = ["leader" , "views_count" , "is_company" , "partner_program_id" ]
380+ read_only_fields = [
381+ "leader" ,
382+ "views_count" ,
383+ "is_company" ,
384+ "partner_program" ,
385+ ]
370386
371387 def is_valid (self , * , raise_exception = False ):
372388 return super ().is_valid (raise_exception = raise_exception )
0 commit comments