поданная категория не появляется в форме создания API - PullRequest
0 голосов

Я играю с 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'))

1 Ответ

0 голосов
/ 13 мая 2019

Это потому что вы установили read_only=True на них. Это буквально вызывает то, что у вас есть - поля не присутствуют ни при каких вызовах создания или обновления.

...