【发布时间】:2016-11-28 02:45:15
【问题描述】:
models.py
class Nugget(TimeStampedModel):
added_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, related_name='added_by', blank=True, null=True)
serializers.py
class NuggetSerializer(TaggitSerializer, serializers.ModelSerializer):
added_by = serializers.CreateOnlyDefault(default=serializers.CurrentUserDefault())
views.py
class NuggetList(generics.ListCreateAPIView):
queryset = Nugget.objects.all()
serializer_class = NuggetSerializer
def perform_create(self, serializer):
serializer.save(added_by=self.request.user)
我想要达到的目标:
added_by 应该:
- 设置在
create的Nugget - 默认为创建
Nugget的user,无法覆盖此默认值 - 在检索到
Nugget时包含并显示 - 在可浏览的 API 中不会显示为
create/POST的选项 -
create之后不可编辑
【问题讨论】:
-
只需从序列化程序中完全删除
added_by,并防止它使用exclude自动生成。您仍然可以在保存时传递它,传递给save的 kwarg 被简单地复制到模型中。 -
@spectras 如果我
excludeadded_by,那么它不符合要求3。
标签: python django django-models django-rest-framework