【发布时间】:2014-10-30 11:17:33
【问题描述】:
我正在寻找一种从 Django REST 框架继承 rest_framework.serializers.ModelSerializer 的简单方法,以便它序列化为具有模型类名称和 id 值的外键模型字段的特殊字典,而不仅仅是一个整数/ 首要的关键。这应该适用于不同的模型。
# models.py
class Author(models.Model):
name = models.CharField(max_length=255)
class Book(models.Model):
book_written_by = models.ForeignKey(Author)
class Song(models.Model):
song_written_by = models.ForeignKey(Author)
# serializers.py
class CustomSerializer(serializers.ModelSerializer):
# What to do here? #
class BookSerializer(CustomSerializer):
class Meta:
model = Book
class SongSerializer(CustomSerializer):
class Meta:
model = Song
我想得到以下结果:
kleist = Author.objects.create(name='Kleist')
some_book = Book.objects.create(author=kleist)
BookSerializer(some_book).data == {'id': 1, 'book_written_by': {'Author': 1}} # Returns True
我尝试覆盖 get_related_field() 并将 PrimaryKeyRelatedField 更改为 CustomPrimaryKeyRelatedField 并尝试覆盖 to_native() 但我无法访问模型字段及其对象本身,而只能访问 pk 值。
【问题讨论】:
标签: python django serialization django-models django-rest-framework