Как работает переопределение ModelSerializer Rest Framework Django? - PullRequest
0 голосов
/ 01 февраля 2019

Я следую за случаем, я не могу понять, как работает следующий код, который использует rest_framework.Я посмотрел в документации, но не смог найти там большую помощь.(Этот код взят из учебника по django, но там не было предоставлено никакой информации)

Вот модель:

class Tweet(models.Model):
    parent = models.ForeignKey("self",blank=True,null=True,on_delete=models.CASCADE)
    user = models.ForeignKey(Profile,on_delete=models.CASCADE)
    content = models.CharField(max_length=140,validators=[validate_content])
    timestamp = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now_add=True)

И сериализаторы:

class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True) #write_only
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    parent = ParentTweetModelSerializer(read_only = True)

    class Meta:
        model = Tweet
        fields = [
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'parent'
        ] 
// other lines of code
class ParentTweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True) #write_only
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

Итак, родительэто поле в моей исходной модели Tweet, но когда я использую Serializer для переопределения или замены поля «parent», как ParentTweetModelSerializer может определить, с каким родительским твитом связан твит TweetModelSerializer, и мы не передали ему никаких данных (как мы не передаличто-нибудь в ParentTweetModelSerializer ()?

Мне не удалось найти что-либо связанное с этим в документации rest_framework.

...