,可以通过以下步骤实现:
from django.db import models
class MyModel(models.Model):
CHOICES = (
('option1', 'Option 1'),
('option2', 'Option 2'),
('option3', 'Option 3'),
)
choices = models.CharField(max_length=10, choices=CHOICES)
array_field = models.ArrayField(models.CharField(max_length=10, choices=CHOICES))
from django import forms
from .models import MyModel
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['array_field']
def clean_array_field(self):
array_field = self.cleaned_data['array_field']
choices = dict(MyModel.CHOICES)
human_readable_values = [choices.get(value, value) for value in array_field]
return human_readable_values
在上述代码中,我们定义了一个名为clean_array_field的方法,用于获取ArrayField中的人类可读的值。首先,我们获取到ArrayField的原始值,然后使用MyModel.CHOICES字典将原始值转换为人类可读的值。最后,我们返回人类可读的值。
{% for value in form.array_field.value %}
{{ value }}
{% endfor %}
在上述代码中,我们使用模板标签{% for %}循环遍历ArrayField的人类可读的值,并将其显示在模板中。
这样,当嵌套在ArrayField中时,我们可以从Django的ChoiceField中获取人类可读的值,并在视图或模板中使用。
领取专属 10元无门槛券
手把手带您无忧上云