我在模型中有一种ArrayField
类型。自动为my_list
的建议元素列表中的后端。但是,用户需要根据需要更新此列表。该模型如下所示:
class my_model(models.Model):
my_list = ArrayField(
models.CharField(max_length=10)
)
问题是,在模板中呈现my_list
时,是一个带逗号分隔列表的单个html输入标记。例如a,b,c,d
。
我的问题有两个问题。如何使用模板语言显示逗号分隔列表,以便每个元素都有自己的html输入框。此外,我正在努力的更难的事情是如何使这些元素作为数组保存回模型。
我目前的想法是用javascript攻击前端。但有没有更好的方法来使用Django?
答案 0 :(得分:1)
我不知道你的确切目标是什么,但它可能是这样的:
{% for element in my_list %}
<div> {{element}} </div> <!--any html tag which is you desire-->
{% endfor %}
答案 1 :(得分:0)
您需要创建并注册自定义Widget。
小部件是Django对HTML输入元素的表示。该小部件处理HTML的呈现,以及从与小部件对应的GET / POST字典中提取数据。
将呈现多行textarea的简单示例:
class ArrayWidget(Textarea):
def format_value(self, value):
if value is None or len(value) == 0:
return None
else:
return '\n'.join(value.split(','))
def value_from_datadict(self, data, files, name):
return data.get(name).splitlines()
答案 2 :(得分:0)
例如,您可以创建几个名称属性为“ myfield”的字段。然后在“视图”中,您可以使用request.POST.getlist('myfield')获取该字段的列表,并可以在循环中对其进行迭代并将其存储在arrayfield中。 2年后,但我希望这能解决您的问题。