我使用SeparatedValuesField来跟踪由http://davidcramer.posterous.com/code/181/custom-fields-in-django.html解释的字符串列表,以及这里的许多文章,因此建议将此作为存储字符串列表的正确方法。在
class UserProfile(models.Model):
user = models.OneToOneField(User)
device_ids = SeparatedValuesField(blank=True, null=True, default=[])
它在我的应用程序中运行良好,我可以添加设备ID,并按预期在管理界面中查看它们。在
^{pr2}$但问题在于管理接口,当我打开UserProfile对象的详细信息页面时,管理接口本身正在向我的device_ids字段添加额外的值。在
例如,我的应用程序在字段中插入一个值,当我在管理界面中查看它时,它看起来像这样:
[u'666666-D849-524F-6984-7E9B2D768546']
然后,我更改了UserProfile对象的一些其他随机属性,并使用内置的django管理接口save按钮保存它。在
当我再次打开对象的UserProfile对象详细信息页面时,该值现在如下所示:
[u"[u'666666-D849-524F-6984-7E9B2D768546']"]
如果我重复这个过程,只点击save然后打开这个详细信息页面,它将继续用u“[]字符嵌套实际值。在
我能做些什么来改变这个功能吗?我应该以不同的方式存储字符串列表吗?在
Oiva Eskola的答案看起来不错(不过还没试过)。在
在这个问题之前找到Django源代码,我还偶然发现了以下内容(有效):
我也遇到了同样的问题,最后由于这两个differentanswers才解决了。在
在这种情况下,您需要的是一个自定义小部件,它将字符串列表呈现为字符串。此小部件需要绑定到自定义字段:
希望能奏效。我的代码中有不同的模型名,但我设法从我的自定义字段中获得一个包含逗号分隔的值列表的文本输入。在
如果要用逗号和空格连接字符串,请记住
strip()
自定义字段的get_db_prep_value
方法中的值。否则,这些空间将被保存回数据库。在要使用
^{pr2}$list_display
中的自定义字段,可以向管理模型添加自定义字段:相关问题 更多 >
编程相关推荐