gpt4 book ai didi

django - DRF : callable in serializer choicefield "choices"

转载 作者:行者123 更新时间:2023-12-02 08:58:38 27 4
gpt4 key购买 nike

我有一个带有“所有者”字段的管理序列化程序。我希望当前用户填充此字段的选择,但在运行迁移时我收到 TypeError,表明 drf 不支持序列化器选择字段的可调用项。 django 支持模型选择字段的可调用项,但显然用户会随时更改,因此我希望在序列化器实例化时填充该字段。有人可以在这里提出可行的解决方案吗?

def get_available_users():
return [(u.id, u.username) for u in User.objects.all()]


class AdminCreateSerializer(CreateSerializer, AdminSerializer):
owner = serializers.ChoiceField(choices=get_available_users)


>> TypeError: 'function' object is not iterable

最佳答案

让您的迁移发挥作用

添加

from django.utils.functional import lazy

然后

owner = serializers.ChoiceField(choices=lazy(get_available_users, tuple)())

def get_available_users():
try:
_users = [(u.id, u.username) for u in User.objects.all()]
except:
_users = list(tuple())
return _users

关于django - DRF : callable in serializer choicefield "choices",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50673949/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com