【发布时间】:2014-08-24 20:46:11
【问题描述】:
我的项目中基本上有以下模型:
class ShellMessage(TimeStampedModel):
# There is a hidden created and modified field in this model.
ACTION_TYPE = (
('1' , 'Action 1'),
('2' , 'Action 2')
)
type = models.CharField(max_length=2,choices=ACTION_TYPE,default='1')
action = models.CharField(max_length=100)
result = models.CharField(max_length=300, blank=True)
creator = models.ForeignKey(User)
我创建了一个序列化器:
class ShellMessageSerializer(serializers.ModelSerializer):
class Meta:
model = ShellMessage
fields = ('action', 'type', 'result', 'creator')
还有一个 ModelViewSet:
class ShellListViewSet(viewsets.ModelViewSet):
serializer_class = ShellMessageSerializer
queryset = ShellMessage.objects.all()
我的问题如下: 当我创建一个带有 POST 到我的 API 的新 ShellMessage 时,我不想提供“创建者”的 foreignKey,而只是提供该人的用户名,然后在我的 ViewSet 中处理它以找到与此用户名关联的用户和将它保存在我的 ShellMessage 对象中。
如何使用 Django rest 框架实现这一点?我想增强 create() 或 pre_save() 方法,但我被卡住了,因为我的所有更改都会覆盖“正常”框架行为并导致意外错误。
谢谢。
【问题讨论】:
标签: django django-rest-framework