【问题标题】:Auto created_by field in DjangoDjango中的自动created_by字段
【发布时间】:2020-12-18 19:00:15
【问题描述】:
【问题讨论】:
标签:
django
django-models
django-rest-framework
【解决方案1】:
您有多种方法可以做到这一点。
最简单的方法是文档建议的方法 (https://www.django-rest-framework.org/api-guide/serializers/#passing-additional-attributes-to-save):
将附加属性传递给 .save()
有时您会希望您的视图代码能够注入额外的
保存实例时的数据。这些额外的数据可能
包括当前用户、当前时间或
不属于请求数据的任何其他内容。
您可以通过在调用时包含额外的关键字参数来做到这一点
。节省()。例如:
serializer.save(owner=request.user)
或者您可以覆盖序列化程序的.create() 方法,并使用self.context:
class FooSerializer(serializers.Serializer):
bar = serializers.CharField()
created_by = serializers.IntegerField(read_only=True) # FK
def create(self, validated_data):
created_by = get_object_or_404(User, user=self.context["request"].user)
foo = Foo()
foo.bar = validated_data["bar"]
foo.created_by = created_by
foo.save()
return foo