【发布时间】:2013-12-08 12:48:59
【问题描述】:
所以我目前正在为现有的数据库实施一个新的标记系统。
当前的标记系统使用 ManyToMany 字段,但是客户端希望有一个逗号分隔的输入字段 (CharField)。
所以我想出了最好的方法,在不危及当前架构的情况下,启用新的逗号分隔字段,但将标签写为以前的 ManyToMany 架构。
但是无论我怎么尝试,标签都会保存到数据库标签模型中,而不是保存在它们应该应用的条目上。
简单介绍:
def save(self, *args, **kwargs):
currTags = self.placeHolderTags.split(",")
for tag in currTags:
dbtag, created = Tag.objects.get_or_create(name=tag)
self.tags.add(dbtag)
super(BeeldBankEntry, self).save(*args, **kwargs)
进一步的模型背景:
tags = models.ManyToManyField(Tag, verbose_name='Tags', blank=True)
placeHolderTags = models.CharField(max_length=400, verbose_name='Tags2', blank=True)
【问题讨论】:
-
get_or_create() 返回一个查询集,你试过 get_or_create()[0] 吗?
-
get_or_create 返回一个 (object, created_flag) 的元组