Наличие модели, сериализатора, представления и URL-адресов:
#models.py:
class Musician(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
instrument = models.CharField(max_length=100)
class Album(models.Model):
artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
release_date = models.DateField()
num_stars = models.IntegerField()
#serializers:
class MusicianSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Musician
fields = ('id', 'first_name', 'last_name', 'instrument')
class AlbumSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Album
fields = ('id', 'artist', 'name', 'release_date', 'num_stars')
#view:
class MusicianViewSet(viewsets.ModelViewSet):
queryset = Musician.objects.all()
serializer_class = MusicianSerializer
class AlbumViewSet(viewsets.ModelViewSet):
queryset = Album.objects.all()
serializer_class = AlbumSerializer
#urls:
router = DefaultRouter()
router.register(r'musicians', views.MusicianViewSet)
router.register(r'albums', views.AlbumViewSet)
Можно ли включить URL-адрес для ListView (возможные варианты) Muscians в представлении OPTIONS (метаданные) в List- иDetailView для альбомов?
Повторная настройка что-то вроде:
OPTIONS /api/albums/
{
....
"choises": {
"mucician": http://BASE_URL/api/musicians/
... etc. for other foreign/related fields
}
...
}
В настоящее время я могу вернуть только диктовку с вариантами выбора, используя field.choices.items ()