6

Django-REST-framework の Serializer クラスの pk フィールドは何ですか?

主キーだと思いますが、「pk」という名前は予約語ですか?Serializer クラスは、それが Snippet モデルの主キーになることをどのように認識しますか?

「pk」という名前のスニペット モデルにフィールドがありません。

class SnippetSerializer(serializers.Serializer):
    pk = serializers.Field()  # Note: `Field` is an untyped read-only field.
    title = serializers.CharField(required=False,
                                  max_length=100)
    code = serializers.CharField(widget=widgets.Textarea,
                                 max_length=100000)
    linenos = serializers.BooleanField(required=False)
    language = serializers.ChoiceField(choices=LANGUAGE_CHOICES,
                                       default='python')
    style = serializers.ChoiceField(choices=STYLE_CHOICES,
                                    default='friendly')

....class SnippetSeralizer は続く

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default='')
    code = models.TextField()
    linenos = models.BooleanField(default=False)
    language = models.CharField(choices=LANGUAGE_CHOICES,
                                default='python',
                                max_length=100)
    style = models.CharField(choices=STYLE_CHOICES,
                             default='friendly',
                             max_length=100)

    class Meta:
        ordering = ('created',)
4

2 に答える 2

11

pkModelの基本クラスに存在するプロパティですdjango.db.models

class Model(object):
    ...
    pk = property(_get_pk_val, _set_pk_val)
    ...

これは、モデルの主キーを識別するために使用されます。私はDjango-RESTを使用していませんが、おそらくモデルのフィールドにマップするだけです。

于 2013-03-14T20:18:17.763 に答える