【问题标题】:django taggit-serializer not create tags in rest frameworkdjango taggit-serializer 不在 rest 框架中创建标签
【发布时间】:2020-03-16 16:11:51
【问题描述】:

这是我的models.py

class Post(models.Model):
    author=models.ForeignKey(User,on_delete=models.CASCADE,related_name="post")
    title=models.CharField(max_length=128,null=True,blank=True)
    rate=models.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(5)],default=True,null=True,blank=True)

    # rating=models.IntegerField(null=True,blank=True)
    content=models.TextField(null=True,blank=True)
    review=models.CharField(max_length=250,null=True,blank=True)
    url=models.URLField(null=True,blank=True)
    voters = models.ManyToManyField(settings.AUTH_USER_MODEL,blank=True,related_name="post_voters")
    tags = TaggableManager()

在我的 serializers.py 中 我已经导入了

from taggit_serializer.serializers import (TagListSerializerField,
                                           TaggitSerializer)

这里是后序列化器

class Spost(serializers.ModelSerializer,TaggitSerializer):
    tags = TagListSerializerField()

    author=serializers.StringRelatedField(read_only=True)
    # likes_count=serializers.SerializerMethodField(read_only=True)
    # user_has_voted=serializers.SerializerMethodField(read_only=True)
    ## for string related field without displaying it as numerics , it displays the direct object of that object"
    # user=Scomments()
    class Meta:
        model = Post
        fields = ('id','title','rate','author','content','review','url','tags')
    def get_likes_count(self,instance):
        return instance.voters.count()
    def get_user_has_voted(self,instance):
        request=self.context.get("request")
        return instance.voters.filter(pk=request.user.pk).exists()

但是我现在面临的问题是每当我触发带有标签的发布请求时,正在创建对象时,我会得到该对象以及正在创建的标签,但是当我在管理面板中看到标签部分没有被更新时

{
        "rate": 4,
        "content": "content",
        "review": "dsfdf",
        "url": "http://google.com",
        "tags": [
            "django",
            "python"
        ]
    }    

这是发布请求,在邮递员中我可以看到更新的请求

{
    "id": 122,
    "title": null,
    "rate": 4,
    "author": "User",
    "content": "content",
    "review": "dsfdf",
    "url": "http://google.com",
    "tags": [
        "django",
        "python"
    ]
}    

但是当我在 django 管理面板和所有对象的 json 列表中看到相同的东西时,我可以看到标签部分是空白的

{
        "id": 122,
        "title": null,
        "rate": 4,
        "author": "User",
        "content": "content",
        "review": "dsfdf",
        "url": "http://google.com",
        "tags": []
    }

【问题讨论】:

    标签: python django django-rest-framework django-taggit


    【解决方案1】:
    class Spost(TaggitSerializer, serializers.ModelSerializer):
        tags = TagListSerializerField()
    

    在这里,您必须将TaggitSerializer 作为序列化程序中的第一个参数传递。当您从它继承 TagListSerializerField 字段时。

    【讨论】:

    • 完美,问题排序
    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多