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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

炎炎設(shè)計(jì) 2023-07-18 15:53:24
假設(shè)我使用默認(rèn)的 django 模型、一個(gè) Post 模型(下面的代碼)和一個(gè)將用戶鏈接到帖子的 SavedPost 模型(如果存在特定帖子的特定用戶,則為該用戶保存該帖子)以及一個(gè) Follower 模型鏈接 2 個(gè)用戶(類似于 SavedPost)。我想要做什么:一個(gè) API,對(duì)于用戶來(lái)說(shuō),他們可以獲得他們關(guān)注的用戶的所有帖子,此外,每個(gè)帖子都有一個(gè)額外的“字段”來(lái)說(shuō)明該帖子是否保存。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)注的所有帖子,但沒(méi)有說(shuō)明它們是否已保存。我正在尋找帖子上的“is_saved”布爾值來(lái)表示該帖子是否已為該用戶保存。任何幫助/方法來(lái)做到這一點(diǎn)表示贊賞。謝謝。
查看完整描述

2 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

用作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


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

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

首先,需要明確的是,我將定義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,您可以添加此字段(請(qǐng)記住將其添加到內(nèi)部類fields中的變量中Meta- 也就是說(shuō),如果您正在使用ModelSerializer):


class PostSerializer(serializers.ModelSerializer):

    saved = SavedPostSerializer(many=True)

    ...

要完成它,請(qǐng)定義您的SavedPostSerializer- 上面PostSerializer(如果在同一文件/模塊中):


class SavedPostSerializer(serializers.ModelSerializer):

    class Meta:

        model = SavedPost

        fields = "__all__"

這樣,您的 json 應(yīng)該有一個(gè)嵌套字段,其中的saved鍵包含 s 數(shù)組SavedPost(如果有任何與Post檢索到的 s 相關(guān)的內(nèi)容)。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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