django - 在Django Rest框架中将选择限制为外键

标签 django django-rest-framework

如何限制request.user的图像与节点链接。我希望我可以做类似的事情:

photo = models.ForeignKey(
    Image,
    limit_choices_to={'owner': username},
)

但是request.user而不是username,并且我不想使用本地线程。

models.py
class Node(models.Model):
    owner = models.ForeignKey(User)
    content = models.TextField()
    photo = models.ForeignKey(Image)

class Image(models.Model):
    owner = models.ForeignKey(User)
    file = models.ImageField(upload_to=get_upload_file_name)

serializers.py
class ImageSerializer(serializers.ModelSerializer):
    owner = serializers.Field('owner.username')

    class Meta:
        model = Image
        fields = ('file', 'owner')

class NodeSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = Node
        fields = ('content', 'photo', 'owner')

最佳答案

我将通过覆盖get_serializer_class来处理此问题,以在运行时动态返回序列化程序类,并在该字段上设置choices选项:

def get_serializer_class(self, ...):
    user = self.request.user
    owner_choices = ...  # However you want to restrict the choices

    class ImageSerializer(serializers.ModelSerializer):
        owner = serializers.Field('owner.username', choices=owner_choices)

        class Meta:
            model = Image
            fields = ('file', 'owner')

    return ImageSerializer

关于django - 在Django Rest框架中将选择限制为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173425/

相关文章:

python - Django REST 框架 : how to substitute null with empty string?

javascript - Django Rest 框架正在从数据库中返回 'u 前缀到 Angular

django - Rest-auth 中的自定义用户模型 : RelatedObjectDoesNotExist

python - 内联 django shell 与 python shell 中的变量范围

python - 如何使用 django Rest 框架解析多部分表单数据中的多个文件?

json - 序列化程序中的格式验证错误

Django 身份验证失败

python - Django 使用工厂函数从同一基类创建多个表/模型类

django - 在 Django 中关闭浏览器时检测用户注销

django - 有没有一种简单的方法可以将 Django 的模型和迁移链与数据库验证一致性进行比较?