Django - 允许指定用户修改某些模型字段

Django - allowing specified user to modify certain model fields

我需要允许模型中指定的特定用户修改模型的一些字段。我知道我需要创建一个权限 class,它将控制整个过程,但我不知道该怎么做。 这是代码示例:

class Task(models.Model):
   creator = models.ForeignKey('auth.User', related_name='created_tasks', on_delete=models.CASCADE)
   target = models.ForeignKey(User, related_name='assigned_tasks', on_delete=models.CASCADE)
   title = models.CharField(max_length=100)
   description = models.TextField()
   created = models.DateTimeField(auto_now_add=True)
   deadline = models.DateTimeField()
   priority = models.CharField(max_length=50, choices=PRIORITY_CHOICES, default='NORMAL')
   progress = models.CharField(max_length=50, choices=PROGRESS_CHOICES, default='ASSIGNED')
   is_finished = models.BooleanField(default=False)

所以我想让目标只修改进度和 is_finished 字段。

我正在使用 DjangoRestFramework,不确定是否有帮助。 我应该创建一个方法来检查用户是否 == 目标,并忽略所有其他更改,或者是否可以创建一个权限来执行此操作。

您可以使用群组,为该群组分配特定权限并将您的目标用户放入您的群组,只需前往管理站点设置群组。希望对你有帮助。

serializers.py

from rest_framework import serializers
class TaskSerializer(serializers.ModelSerializer):
    class Meta:
        model = Task
        exclude = ()

    def update(self, instance, validated_data):
        if self.context['request'].user == specified_user:
            setattr(instance, 'progress', validated_data.get('progress', None))
            setattr(instance, 'is_finished', validated_data.get('is_finished', None))
            instance.save()
            return instance
        return super(TaskSerializer, self).update(instance, validated_data)