第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python Django 保存帖子的計(jì)算方法

Python Django 保存帖子的計(jì)算方法

炎炎設(shè)計(jì) 2023-07-18 15:53:24
假設(shè)我使用默認(rèn)的 django 模型、一個 Post 模型(下面的代碼)和一個將用戶鏈接到帖子的 SavedPost 模型(如果存在特定帖子的特定用戶,則為該用戶保存該帖子)以及一個 Follower 模型鏈接 2 個用戶(類似于 SavedPost)。我想要做什么:一個 API,對于用戶來說,他們可以獲得他們關(guān)注的用戶的所有帖子,此外,每個帖子都有一個額外的“字段”來說明該帖子是否保存。class Post(models.Model):    user = models.ForeignKey(User, on_delete=models.CASCADE)    post_type = models.CharField(max_length=1, choices=[('B', 'Blog'), ('V', 'Video')], default='B')    file_path = models.URLField(null=True)    title = models.CharField(max_length=255)    description = models.TextField()    created_at = models.DateTimeField(auto_now_add=True)    updated_at = models.DateTimeField(auto_now=True)class SavedPost(models.Model):    user = models.ForeignKey(User, on_delete=models.CASCADE)    post = models.ForeignKey(Post, on_delete=models.CASCADE)    created_at = models.DateTimeField(auto_now_add=True)    class Meta:        # A user can save a post only once.        unique_together = ('user', 'post')class Follower(models.Model):    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user")    follower = models.ForeignKey(User, on_delete=models.CASCADE, related_name="follower")    created_at = models.DateTimeField(auto_now_add=True)    class Meta:        # A user can follow another user only once        unique_together = ('user', 'follower')后序列化器:class PostSerializer(serializers.ModelSerializer):    """    Nested serializer for post using SimpleUser and Kingdom.    """    class Meta:        model = Post        fields = ('id', 'user', 'post_type', 'file_path',                  'title', 'description', 'created_at', 'updated_at')    def to_representation(self, instance):        data = super().to_representation(instance)        data['user'] = UserSerializer(            User.objects.get(pk=data['user'])).data        return data到目前為止,根據(jù)我所做的視圖,我可以獲得 request.user 關(guān)注的所有帖子,但沒有說明它們是否已保存。我正在尋找帖子上的“is_saved”布爾值來表示該帖子是否已為該用戶保存。任何幫助/方法來做到這一點(diǎn)表示贊賞。謝謝。
查看完整描述

2 回答

?
MMMHUHU

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


查看完整回答
反對 回復(fù) 2023-07-18
?
慕森卡

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)容)。


查看完整回答
反對 回復(fù) 2023-07-18
  • 2 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號