![](/img/trans.png)
[英]django-rest-framework ManyToManyField create and update
[英]How to work with ManytoManyField with through relation in django-rest-framework
基本上我有這樣的模型:
class Playlist(models.Model):
key = models.CharField(max_length=255,blank=True, unique=True)
user = models.ForeignKey(User)
title = models.CharField(max_length=200)
pub_date = models.DateTimeField(auto_now_add=True)
videos = models.ManyToManyField(Video, through='PlaylistVideo')
class PlaylistVideo(models.Model):
playlist = models.ForeignKey(Playlist)
video = models.ForeignKey(Video)
position = models.IntegerField()
class Video(models.Model):
title = models.CharField(max_length=255,blank=True)
description = models.TextField(blank=True)
thumb = models.URLField(blank=True)
duration = models.IntegerField(default=0)
現在我想要一個API來返回這樣的PLAYLISTS ...但是視頻應該按PlaylistVideo模型中的POSITION排序
{
"key": "h8x3",
"title": "First Playlist",
"pub_date": "2012-10-11T17:00:26Z",
"videos": [
{
....
},
{
....
}
]
},
我該怎么辦呢?
不太確定你是否已經設法解決了你的問題,但我自己也遇到過這個問題,並設法讓它像這樣做:
創建一個這樣的自定義序列化器:
class PlaylistVideoSerializer(serializers.HyperlinkedModelSerializer):
title = serializers.ReadOnlyField(video.title)
description = serializers.ReadOnlyField(video.description)
thumb = serializers.ReadOnlyField(video.thumb)
duration = serializers.ReadOnlyField(video.duration)
class Meta:
# your associative entity here
model = PlaylistVideo
fields = ('title', 'description', 'thumb', 'duration')
在這里,我假設你想顯示視頻實體/表格下的所有字段。 隨意調整您的需求/喜好。
然后,你需要做的就是這個
class PlaylistSerializer(serializers.ModelSerializer):
videos = PlaylistVideoSerializer(source='playlistvideo_set', many=True)
class Meta:
model = Playlist
fields = ('key', 'title', 'pub_dates', 'videos')
注意:始終確保源引用關聯實體。 否則你會得到一個空的json列表。
希望這可以幫助那些面臨類似問題的人。
你可以這樣做:
class PlaylistVideoList(generics.ListCreateAPIView):
serializer_class = PlaylistVideoSerializer
queryset = PlaylistVideo.objects.all().order_by('position')
在serializers.py中:
class PlaylistVideoSerializer(serializers.ModelSerializer):
class Meta:
model = PlaylistVideo
我們需要真正添加一些關於“通過”關系的文檔。
與此同時,這個討論可能會有所幫助:
https://groups.google.com/forum/#!topic/django-rest-framework/xzOhjILq3xA/discussion
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.