拥有模型、序列化程序、视图和 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)
是否可以在专辑的 List- 和 DetailView 的 OPTIONS(元数据)视图中包含音乐家的 ListView(可能的选择)的 URL?
重新调整类似:
OPTIONS /api/albums/
{
....
"choises": {
"mucician": http://BASE_URL/api/musicians/
... etc. for other foreign/related fields
}
...
}
目前我只能使用 field.choices.items() 返回一个带有选项的字典