Django Rest框架从API创建表单中删除一个字段

mhn*_*dev 1 api django python-3.x django-rest-framework

我有一个与该模型相关的模型和视图集,这是我的代码:

class EMAILTemplate(models.Model):
    """ Message SMS Template """
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    body = models.TextField()
    tokens = models.TextField()
    created = models.DateTimeField(auto_now_add=True)

    def save(self, *args, **kwargs):
        self.tokens = ",".join(re.findall(r'{{\s*(.*?)\s*}}', self.body))
        super().save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我不希望字段标记出现在 Django 休息框架创建或编辑表单中的创建表单中,因为如您所见,它将从正文字段中提取。但我想在查看单个模型或模型列表中使用此字段。

这是我的 ModelSerializer :

class EmailTemplateSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = EMAILTemplate
        fields = ('name', 'body', 'user', 'tokens')
Run Code Online (Sandbox Code Playgroud)

nev*_*ner 5

您可以指定tokens为只读字段:

class EmailTemplateSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = EMAILTemplate
        fields = ('name', 'body', 'user', 'tokens')
        read_only_fields = ('tokens',)
Run Code Online (Sandbox Code Playgroud)