添加和删​​除Django ListField

时间:2015-05-18 04:35:04

标签: python django

以下链接指定如何在Django中创建列表字段。

How to create list field in django

我的问题;如何添加,删除该字段的项目?如果可能的话。我希望之后能够在Model的实例的这个字段中添加和删除。如果不可能,请有人建议我替代。

2 个答案:

答案 0 :(得分:3)

ListField中的

to_python函数用于将数据库字符串转换为python对象(这里是列表) get_prep_value用于将python对象处理为字符串(以便在下一步中存储到数据库中)。 当你调用你的obj.listfield,例如a.list时,你会得到一个python列表,所以你可以使用a.list.append(val)a.list.insert(0, val)方法来操作,最后调用{{1 },a.save()将在数据库和python之间进行转换。

listfield

例如:

class Dummy(models.Model):
    mylist = ListField()

    def insert_to_mylist(self, index, value):
        self.mylist.insert(index, value)
        #self.save()
    def remove_from_mylist(self, value):
        self.mylist.remove(value)
        #self.save()

如果您想在不d = Dummy() d.mylist.insert(0, 'tu') d.save() d.mylist.remove('tu') d.save() d.insert_to_mylist(0, "tu") d.save() d.remove_from_mylist('tu') d.save() 的情况下插入或移除,只需将.save()添加到.save()insert_to_mylist功能即可。

remove_from_mylist仅用于数据库和python之间的转换,因此添加删除或插入可能很困难。但是你可以在模型中完成它,如果很多模型需要使用这个方法,只需写一个ListField

答案 1 :(得分:1)

我在模型中存储列表的方法是将它们转换为字符串并将它们存储为TextField。