Я играю с django rest
framework, и моя проблема была в категории и тегах fileds
не отображаются в форме создания API или в форме обновления, я использую ModelSerializer
, как я могу это исправить?
serializers.py
# -*- coding: utf-8 -*-
from django.utils.safestring import mark_safe
from markdown import markdown
from users.models import *
from rest_framework import serializers
from articles.models import *
class UserModelSerializer(serializers.ModelSerializer):
class Meta:
model = Ouser
fields = ('id', 'username', 'first_name', 'last_name', 'avatar')
class TagModelSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Tag
exclude = ['updated_at', 'created_at']
extra_kwargs = {
'url': {'view_name': 'tag-api', 'lookup_field': 'slug'},
}
class CategoryModelSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Category
exclude = ['updated_at', 'created_at']
extra_kwargs = {
'url': {'view_name': 'category-api', 'lookup_field': 'slug'},
}
class ArticleModelSerializer(serializers.ModelSerializer):
author = UserModelSerializer(read_only=True)
content_as_markdown = serializers.SerializerMethodField()
date = serializers.SerializerMethodField()
url = serializers.HyperlinkedIdentityField(
view_name='article-api',
lookup_field='slug'
)
category = CategoryModelSerializer(read_only=True)
tags = TagModelSerializer(read_only=True, many=True)
class Meta:
model = Article
exclude = ['updated_at', 'created_at']
def get_date(self, obj):
return obj.published_at.strftime("%b %d, %Y")
def get_content_as_markdown(self, obj):
return mark_safe(markdown(obj.content, safe_mode='escape'))