gpt4 book ai didi

python - 带有添加和删除的 Django ListField

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:20 25 4
gpt4 key购买 nike

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

How to create list field in django

我的问题;如何向该字段添加、删除项目?如果可能的话。我希望之后能够在模型实例的这个字段中添加和删除。如果不可能,请有人向我推荐替代方案。

最佳答案

ListField 中:

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

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_mylistremove_from_mylist 功能。

ListField 只是用来做数据库和python之间的转换,所以添加remove或insert可能比较困难。但是你可以在你的Model中实现,如果很多Model需要用到这个方法,写一个abstract model就可以了。

关于python - 带有添加和删除的 Django ListField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295171/

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