DRF - Как включить иностранные данные в сериализатор?
У меня есть модель, которая выглядит примерно так:
class Foo(models.Model):
data = models.ForeignKey(Data, on_delete=models.CASCADE)
source = models.ForeignKey(Source, on_delete=models.CASCADE)
# other fields...
В этом случае я хотел бы показать полные модели для data и source, а не только их идентификаторы. Мне также нужно, чтобы data был доступен только для чтения, поскольку он генерируется автоматически. Мой сериализатор выглядит следующим образом:
class FooSerializer(serializers.ModelSerializer):
data = DataSerializer(read_only=True)
source = SourceSerializer()
class Meta:
model = Foo
fields = ["data", "source"]
read_only_fields = ["data"]
Что я не совсем понимаю, так это:
- Why isn't data read-only, like it would be if it were a "normal" serializer field?
- How can I say "save a new
sourceif an identical one doesn't exist already?"