如何在Django-Rest-Framework中创建CreateOnly视图?

时间:2019-01-17 16:30:51

标签: django-rest-framework

如何创建“仅创建”视图?我只想允许用户创建一个对象,什么也没有。

我当前的代码如下:

views.py

echo <script language="javascript"> alert("array (\n  'SIS' => \n  array (\n    'MEMORYUSAGE' => \n    array (\n      'STANDBY' => '1.01',\n      'STANDBYTXT' => '1.01 Mb',\n      'LASTRUN' => '1.01',\n      'RUNNING' => 0.0,\n      'RUNNINGTXT' => '0 Mb',\n    ),\n    'EXECTIMEUSAGE' => \n    array (\n      'STANDBY' => -1547742337.322018,\n      'LASTRUN' => 0.0007879734039306641,\n      'RUNNINGTXT' => 'Menos de 1 Seg',\n    ),\n  ),\n)\narray (\n  'SES_START' => true,\n  'SES_TIMEOUT' => 1547767410,\n  'SES_ACTIVITY' => 1547745937,\n  'SES_LANG' => 'es_ES',\n  'HOME' => 2,\n)\n") </script>

这很好。但是我在模型中有一个ForeignKey,在Web视图中,每个用户都可以看到所有ID。 (在REST Web界面中为ForeignKey选择输入)

enter image description here

如何停止这种行为?

谢谢

1 个答案:

答案 0 :(得分:1)

默认情况下,相关字段(PrimaryKeyRelatedFieldSlugRelatedField等)使用默认的 HTML选择呈现。选中此snippet

Django REST框架允许您通过使用style关键字参数(选中此doc)来更改序列化器字段的呈现样式。

如果您不希望API在选择中显示现有对象的ID,请更改序列化器字段的style参数,将呈现样式设置为简单的 HTML输入 。像这样:

class BookingRequestSerializer(serializers.ModelSerializer):
    ...
    related_field = PrimaryKeyRelatedField(
        queryset=RelatedModel.objects.all(),
        style={'base_template': 'input.html'},
    )