Serializers

ManyToMany Fields

存储对象时处理多对多关系

需求

对于提交一个新文章,其标签有则关联,没有则新建

Model

class ArticleTag(models.Model):
    """标签"""
    name = models.CharField('标签名', max_length=50, primary_key=True)

    def __str__(self):
        return self.name


class Article(models.Model):
    """文章"""
    MARKDOWN = 'MD'
    RICH_TEXT = 'RT'
    ARTICLE_CONTENT_TYPE = (
        (MARKDOWN, 'Markdown'),
        (RICH_TEXT, 'RichText'),
    )

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField('标题', max_length=200)
    category = models.ForeignKey(ArticleCategory, on_delete=models.SET_NULL, null=True)
    content = models.TextField('文章内容')
    content_type = models.CharField('文章内容类型', choices=ARTICLE_CONTENT_TYPE, max_length=20)
    tags = models.ManyToManyField(ArticleTag, blank=True)
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    public = models.BooleanField('是否公开', default=True)
    create_datetime = models.DateTimeField(auto_now_add=True)
    update_datetime = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

Serializer

示例

清空返回的Null和空列表字段

Context

send context infomation to serializers from view set

最后更新于