@ -72,6 +72,19 @@ class ArticleContentSerializer(serializers.ModelSerializer):
model = ArticleContent
model = ArticleContent
fields = [ ' id ' , ' title ' , ' content ' , ' priority ' , ' status ' , ' created_at ' , ' updated_at ' , ' parts ' ]
fields = [ ' id ' , ' title ' , ' content ' , ' priority ' , ' status ' , ' created_at ' , ' updated_at ' , ' parts ' ]
class SimilarArticleSerializer ( serializers . ModelSerializer ) :
categories = ArticleCategoryListSerializer ( many = True , read_only = True )
thumbnail = serializers . SerializerMethodField ( )
share_link = serializers . CharField ( read_only = True )
class Meta :
model = Article
fields = [ ' title ' , ' slug ' , ' thumbnail ' , ' categories ' , ' share_link ' , ' created_at ' ]
def get_thumbnail ( self , obj ) :
return get_thumbs ( obj . thumbnail , self . context . get ( ' request ' ) )
class ArticleDetailSerializer ( serializers . ModelSerializer ) :
class ArticleDetailSerializer ( serializers . ModelSerializer ) :
categories = ArticleCategoryListSerializer ( many = True , read_only = True )
categories = ArticleCategoryListSerializer ( many = True , read_only = True )
thumbnail = serializers . SerializerMethodField ( )
thumbnail = serializers . SerializerMethodField ( )
@ -80,12 +93,14 @@ class ArticleDetailSerializer(serializers.ModelSerializer):
average_rate = serializers . SerializerMethodField ( )
average_rate = serializers . SerializerMethodField ( )
article_content = serializers . SerializerMethodField ( )
article_content = serializers . SerializerMethodField ( )
share_link = serializers . CharField ( read_only = True )
share_link = serializers . CharField ( read_only = True )
similar_articles = serializers . SerializerMethodField ( )
class Meta :
class Meta :
model = Article
model = Article
fields = [ ' id ' , ' title ' , ' slug ' , ' thumbnail ' , ' description ' ,
fields = [ ' id ' , ' title ' , ' slug ' , ' thumbnail ' , ' description ' ,
' article_file ' , ' view_count ' , ' download_count ' ,
' article_file ' , ' view_count ' , ' download_count ' ,
' categories ' , ' created_at ' , ' user_rate ' , ' average_rate ' , ' bookmark ' , ' article_content ' , ' share_link ' ]
' categories ' , ' created_at ' , ' user_rate ' , ' average_rate ' , ' bookmark ' , ' article_content ' , ' share_link ' ,
' similar_articles ' ]
def get_thumbnail ( self , obj ) :
def get_thumbnail ( self , obj ) :
return get_thumbs ( obj . thumbnail , self . context . get ( ' request ' ) )
return get_thumbs ( obj . thumbnail , self . context . get ( ' request ' ) )
@ -141,6 +156,17 @@ class ArticleDetailSerializer(serializers.ModelSerializer):
content_id = obj . id
content_id = obj . id
)
)
def get_similar_articles ( self , obj ) :
category_ids = obj . categories . values_list ( ' id ' , flat = True )
similar = (
Article . objects
. filter ( categories__id__in = category_ids , status = True )
. exclude ( id = obj . id )
. distinct ( )
. order_by ( ' -created_at ' ) [ : 3 ]
)
return SimilarArticleSerializer ( similar , many = True , context = self . context ) . data
def get_article_content ( self , obj ) :
def get_article_content ( self , obj ) :
"""
"""
Get the content of the article .
Get the content of the article .