stacklens / dusai-blog

杜赛的博客的评论区。详情见 Issue。
2 stars 0 forks source link

article/114/ #97

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

Django-Vue搭建个人博客:文章标签 - 杜赛的博客

https://www.dusaiphoto.com/article/114/

shanyongxu commented 3 years ago

up,这样貌似无法在创建时指定tags

shanyongxu commented 3 years ago

补充一下:如果在创建的时候指定tag,需要重写serializer的create方法,里面针对多对多的写法 def create(self, validated_data): category_title = validated_data.pop('category_title') tags = Tag.objects.filter(text__in=validated_data['tags']) validated_data['category'] = Category.objects.get(title=category_title)
validated_data.pop('tags') article = Article.objects.create( **validated_data ) article.tags.set(tags) return article

stacklens commented 3 years ago

补充一下:如果在创建的时候指定tag,需要重写serializer的create方法,里面针对多对多的写法 def create(self, validated_data): category_title = validated_data.pop('category_title') tags = Tag.objects.filter(text__in=validated_data['tags']) validated_data['category'] = Category.objects.get(title=category_title) validated_data.pop('tags') article = Article.objects.create( **validated_data ) article.tags.set(tags) return article

👍👍👍

这样也不错。我的想法是tag一定是先于article创建的。比如用户在输入tag完毕后,不需要点击确认按钮,tag就自动后台创建了。

youngwy258 commented 3 years ago

up 问一下,我按照你的样式输入进去代码提示, 提示如下怎么回事 { "tags": [ "Invalid hyperlink - No URL match." ] }

YMHbro commented 2 years ago

up请问,在ArticleSerializer中的tags,我打成tag了,但是前后是一致的。但是始终报错。 ValueError: Cannot assign "[, ]": "Article.tag" must be a "Tag" instance. 为什么序列化中的tag命名会影响模型的tag

stacklens commented 2 years ago

up请问,在ArticleSerializer中的tags,我打成tag了,但是前后是一致的。但是始终报错。 ValueError: Cannot assign "[, ]": "Article.tag" must be a "Tag" instance. 为什么序列化中的tag命名会影响模型的tag

用 restframework 就要遵循它的规则,否则框架如何去判断你的想法呢?详细的规范一定要看官方文档,它可能跟随版本有些变化。

qiao1406 commented 2 years ago

如果想要Tag的text是唯一的话,直接设置这个字段 unique=True,不就可以了吗? 为什么要在序列化器里面加这些东西

stacklens commented 2 years ago

如果想要Tag的text是唯一的话,直接设置这个字段 unique=True,不就可以了吗? 为什么要在序列化器里面加这些东西

方法不唯一,有好的实现更好

aiguoli commented 2 years ago

为什么分类详情那里显示不出文章啊 访问/api/category/1/ 返回

{
    "id": 1,
    "name": "默认",
    "slug": "default"
}

代码如下

class CategoryDetailSerializer(serializers.ModelSerializer):
    """分类详情"""
    articles = ArticleCategoryDetailSerializer(many=True, read_only=True)

    class Meta:
        model = Category
        fields = [
            'id',
            'name',
            'slug',
            'articles'
        ]
kerry456 commented 2 years ago

@aiguoli 因为博主下了钩子 继续杠上

Herbert-CN commented 2 years ago

遵照上面的代码的确没办法在article上创建tag, 而且tag还都默认显示为全部的