gpt4 book ai didi

python - multiplechoicefield - 如何更新每个页面加载的选项列表

转载 作者:行者123 更新时间:2023-12-01 04:46:05 24 4
gpt4 key购买 nike

这里显示了一个多项选择字段:

 ratesheets = serializers.MultipleChoiceField(choices=RATESHEET_CHOICES, allow_blank=False)

并且 RATESHEET_CHOICES 填充在此处(也在上下文中显示上述内容):

class RatesheetsComparisonSerializer(serializers.HyperlinkedModelSerializer):

RATESHEET_CHOICES = []

def __init__(self, *args, **kwargs):
for rs in RateSheet.objects.all():
self.RATESHEET_CHOICES.append((rs.pk, rs.title))
super(RatesheetsComparisonSerializer, self).__init__(*args, **kwargs)

...

ratesheets = serializers.MultipleChoiceField(choices=RATESHEET_CHOICES, allow_blank=False)

我遇到的唯一问题是 MultipleChoiceField 保持不变,直到我重新启动服务器。每次加载页面时如何更新选项。我需要将相同的代码放在其他地方吗?我花了很长时间才到达这里,但我找不到任何关于这类东西的东西似乎对我有帮助。谢谢!

最佳答案

添加 ratesheets 字段不是作为类变量(这是静态的!),而是在 __init__ 方法中添加:

class RatesheetsComparisonSerializer(serializers.HyperlinkedModelSerializer):

def __init__(self, *args, **kwargs):
super(RatesheetsComparisonSerializer, self).__init__(*args, **kwargs)
RATESHIELD_CHOICES = []
for rs in RateSheet.objects.all():
RATESHEET_CHOICES.append((rs.pk, rs.title))
self.fields['ratesheets'] = serializers.MultipleChoiceField(choices=RATESHEET_CHOICES, allow_blank=False)

(我假设这些序列化器的工作方式与 Django 表单类似,self.fields 是一个猜测,并且该字典的命名可能有所不同)

编辑:还需要一件事

将元类更改为:

class Meta:
model = RatesheetsComparison
fields = ('created', 'ratesheets',)
read_only_fields = ('created',)

至:

class Meta:
model = RatesheetsComparison
fields = ('created',)
read_only_fields = ('created',)

否则您将收到一个 ImportError 错误,因为它认为费率表存在但找不到。

关于python - multiplechoicefield - 如何更新每个页面加载的选项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29378209/

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