私は周りを見て、私はこの質問への答えを見つけることができませんでした。Django RESTフレームワーク - リンクの代わりにデータを取得する
Serializers.py
class PostSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Post
fields = ['title', 'body', 'comments', 'user', 'date']
class CommentSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Comment
fields = ['body', 'user', 'date']
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ['id', 'user']
Models.py
class Post(models.Model):
# Children
comments = models.ManyToManyField('Comment', blank=True)
# Content
title = models.TextField(default="-->Title here<--")
body = models.TextField(default="-->Body here<--")
# About
user = models.ForeignKey(User)
date = models.DateTimeField(auto_now=True)
object_id = models.PositiveIntegerField(default=0)
content_type = models.ForeignKey(ContentType, default=0)
content_object = fields.GenericForeignKey()
def __str__(self):
return str(self.title)
class Comment(models.Model):
comments = models.ManyToManyField('Comment', blank=True)
# Content
body = models.TextField(default="-->Body here<--")
# About
user = models.ForeignKey(User)
date = models.DateTimeField(auto_now=True)
object_id = models.PositiveIntegerField(default=0)
content_type = models.ForeignKey(ContentType, default=0)
content_object = fields.GenericForeignKey()
def __str__(self):
return str(self.body)
Views.py
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
class CommentViewSet(viewsets.ModelViewSet):
queryset = Comment.objects.all()
serializer_class = CommentSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
def index(request):
return render(request, 'index.html', [])
インデックス・テンプレートは、最新の投稿をロードする "ホームページ" です。各投稿の下で、私はコメントを表示しています。 JSONではこれらのリンクがあり、リンクをどのようにロードするのかがわかりました。
誰かが、このようにするのではなく、バックエンドのコメントを「読み込む」ようにして、投稿(データでもリンクでもない)と一緒に送るべきだと言いました。彼は私に次のことを尋ねた:http://www.django-rest-framework.org/api-guide/filtering/#overriding-the-initial-queryset
私は本当にそれを理解することはできません。
ManyToManyFieldのリンクのデータを取得するにはどうすればよいですか?
class PostSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Post
fields = ['title', 'body', 'comments', 'user', 'date']
depth = 1
これは、実際のレコードを持つpost.user
とpost.comments
のIDを交換します:あなたはdepth
のparamを使用することができ、すべての関連データを1つのレベルの深さを展開する