#python #django #api #rest
#python #django #API #rest
Вопрос:
У меня возникли проблемы с выяснением, как заставить отношения внешнего ключа работать с моим Django REST api.
У меня есть модель
from django.db import models
from django.core.validators import RegexValidator
# Create your models here.
class Hero(models.Model):
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*
Сериализаторы
from rest_framework import serializers
from .models import Hero, SideKick
class HeroSerializer(serializers.HyperlinkedModelSerializer):
sidekicks = serializers.SlugRelatedField(many=True, read_only=True, slug_field='title')
class Meta:
model = Hero
fields = ('name', 'alias', 'sidekicks')
class SideKickSerializer(serializers.HyperlinkedModelSerializer):
sideKick_name = HeroSerializer()
class Meta:
model = SideKick
fields = ('sideKick_name')
Вот как выглядит веб-страница api
Я довольно новичок в этом, и мне было интересно, как я могу получить возможность выбрать a Hero
для создания помощника через веб-страницу API.
каждый раз, когда я создаю героя, поле sidekick остается пустым.
Любая помощь будет оказана.
Ответ №1:
Попробуйте что-нибудь вроде этого :
class HeroSerializer(serializers.HyperlinkedModelSerializer):
sidekicks = serializers.SerializerMethodField()
class Meta:
model = Hero
fields = ('name', 'alias', 'sidekicks')
def get_sidekicks(self, obj):
sidekicks = []
SideKick_objects = SideKick.objects.all()
for f in SideKick_objects:
features.append({"alphanumeric": f.alphanumeric, "hero": f.hero, "sideKick_name": f.sideKick_name})
return sidekicks
Если вы получаете какую-либо ошибку для "sidekicks = serializers.SerializerMethodField ()"
попробуйте использовать: "сериализаторы.ModelSerializer" вместо "сериализаторов.Hyperlink ModelSerializer"
, 'Only alphanumeric characters are allowed.')
name = models.CharField(max_length=60, blank=True, validators=[alphanumeric])
alias = models.CharField(max_length=60)
def __str__(self):
return self.name
class SideKick(models.Model):
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*Сериализаторы
Вот как выглядит веб-страница api
Я довольно новичок в этом, и мне было интересно, как я могу получить возможность выбрать a Hero
для создания помощника через веб-страницу API.
каждый раз, когда я создаю героя, поле sidekick остается пустым.
Любая помощь будет оказана.
Ответ №1:
Попробуйте что-нибудь вроде этого :
Если вы получаете какую-либо ошибку для "sidekicks = serializers.SerializerMethodField ()"
попробуйте использовать: "сериализаторы.ModelSerializer" вместо "сериализаторов.Hyperlink ModelSerializer"
, 'Only alphanumeric characters are allowed.')
hero = models.ForeignKey(Hero, related_name='sidekicks', on_delete=models.CASCADE)
sideKick_name = models.CharField(max_length=60, validators=[alphanumeric])
def __str__(self):
return self.sideKick_name
Сериализаторы
Вот как выглядит веб-страница api
Я довольно новичок в этом, и мне было интересно, как я могу получить возможность выбрать a Hero
для создания помощника через веб-страницу API.
каждый раз, когда я создаю героя, поле sidekick остается пустым.
Любая помощь будет оказана.
Ответ №1:
Попробуйте что-нибудь вроде этого :
Если вы получаете какую-либо ошибку для «sidekicks = serializers.SerializerMethodField ()»
попробуйте использовать: «сериализаторы.ModelSerializer» вместо «сериализаторов.Hyperlink ModelSerializer»