私はDRFでdjangoプロジェクトを作った。DRF(django-rest-framework)では、モデルにforeignkeyfieldが2つある場合、シリアル化できますか?
私がDRFに苦労しているうちに、これらのモデルをシリアライズすることができるのは不思議です。
models.py
class Post(models.Model):
author = models.ForeignKey(User, related_name='related_postwriter')
title = models.CharField(max_length=200, blank = False)
text = models.TextField(blank = True)
created_date = models.DateTimeField(
default=timezone.now
)
point = models.PointField(null=False, blank=True)
def __str__(self): # __unicode__ on Python 2
return self.title
class Comment(models.Model):
post = models.ForeignKey('blog.Post', related_name='related_comments')
author = models.ForeignKey(User, related_name='related_commentwriter')
text = models.TextField(max_length=500)
created_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.text
2つのForeignKeyフィールドがコメントモデルであり、私はそれは多分serializer.pyが対処するのは非常に困難である理由だと思います。
serializers.py
class UserSerializer(serializers.ModelSerializer):
posts = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
comments = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = User
fields = ('id', 'username', 'email', 'posts')
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id', 'author', 'title', 'text', 'point')
def create(self, validated_data):
validated_data['author'] = self.context['request'].user
return super(PostSerializer, self).create(validated_data)
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = ('id', 'post', 'author', 'text')
def create(self, validated_data):
validated_data['author'] = self.context['request'].user
return super(CommentSerializer, self).create(validated_data)
私はcomments = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
もclass PostSerializer(serializers.ModelSerializer):
に配置する必要があるが、私は思った通り、私が置かれたとき、私はTHERフィールドでのコメント」を入れたときに、エラーAssertionError at /posts/ The field 'comments' was declared on serializer PostSerializer, but has not been included in the 'fields' option.
がとてもが来ると思いました〜AttributeError at /posts/ 'Post' object has no attribute 'comments'
が発生する。
私の責任は何ですか?
私は、ユーザーが投稿を読んで「投稿と関連している」とコメントすることができます(ほとんどのコミュニティのウェブサイト、レッド、フェイスブックなど)。serializers.py posted is十分ではない。 serializers.py投稿された投稿とコメントの関係を反映するのに十分ではないようです。
コメントモデルに問題はありますか?または私は間違っていますか?
私はプログラミングで初心者です、教えてください。
読んでいただきありがとうございます。
ありがとう使用することができます!できます! – touchingtwist