Django休眠框架自动填充字段与用户.id
我找不到自动填充我模型中“拥有者”字段的方法。我在使用DRF(Django REST框架)。如果我使用外键,用户可以从下拉框中选择拥有者,但这样没有意义。请帮帮我,我搞不定。views.py我没有包含进来,因为我觉得跟这个问题没关系。
models.py
class Note(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
cr_date = models.DateTimeField(auto_now_add=True)
owner = models.CharField(max_length=100)
# also tried:
# owner = models.ForeignKey(User, related_name='entries')
class Meta:
ordering = ('-cr_date',)
def __unicode__(self):
return self.title
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', "username", 'first_name', 'last_name', )
class NoteSerializer(serializers.ModelSerializer):
owner = request.user.id <--- wrong , but is what a need.
# also tried :
# owner = UserSerializer(required=True)
class Meta:
model = Note
fields = ('title', 'body' )
1 个回答
12
Django Rest Framework 提供了一个叫做 pre_save() 的方法(在通用视图和混合类中),你可以对它进行重写。
class NoteSerializer(serializers.ModelSerializer):
owner = serializers.Field(source='owner.username') # Make sure owner is associated with the User model in your models.py
然后在你的视图类中可以这样写:
def pre_save(self, obj):
obj.owner = self.request.user
参考资料
https://github.com/tomchristie/django-rest-framework/issues/409#issuecomment-10428031