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

pk是一个存在于基Model类中的属性django.db.models

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

用于标识模型的主键。我没有使用过 Django-REST,但他们可能只是将其映射到模型上的字段。

于 2013-03-14T20:18:17.763 回答
1

如果您在 Django REST Framework 中使用通用视图,并且您想为该pk字段使用不同的名称 - 例如id,您可以lookup_field在视图中设置为id.

于 2018-12-01T06:04:48.227 回答