2 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個贊
用作serializers.SerializerMethodField_
class PostSerializer(serializers.ModelSerializer):
is_saved = serializers.SerializerMethodField()
def get_is_saved(self, post_instance):
return SavedPost.objects.filter(user=post_instance.user, post=post_instance).exists()
class Meta:
model = Post
fields = ['id', 'user', 'post_type', 'file_path',
'title', 'description', 'created_at', 'updated_at', 'is_saved']
def to_representation(self, instance):
data = super().to_representation(instance)
data['user'] = UserSerializer(
User.objects.get(pk=data['user'])).data
return data

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個贊
首先,需要明確的是,我將定義srelated_name的選項(xiàng)- 由您決定是否實(shí)現(xiàn)此選項(xiàng):ForeignKeySavedPost
class SavedPost(models.Model):
user = models.ForeignKey(User, related_name="saved", on_delete=models.CASCADE)
post = models.ForeignKey(Post, related_name="saved", on_delete=models.CASCADE)
...
現(xiàn)在,在您的 中PostSerializer,您可以添加此字段(請記住將其添加到內(nèi)部類fields中的變量中Meta- 也就是說,如果您正在使用ModelSerializer):
class PostSerializer(serializers.ModelSerializer):
saved = SavedPostSerializer(many=True)
...
要完成它,請定義您的SavedPostSerializer- 上面PostSerializer(如果在同一文件/模塊中):
class SavedPostSerializer(serializers.ModelSerializer):
class Meta:
model = SavedPost
fields = "__all__"
這樣,您的 json 應(yīng)該有一個嵌套字段,其中的saved鍵包含 s 數(shù)組SavedPost(如果有任何與Post檢索到的 s 相關(guān)的內(nèi)容)。
添加回答
舉報