我是Django的新手,你能帮我理解save()方法的工作原理吗?通过Django admin在ManyToManyField中添加值
这里是我的模型:
class Tag(models.Model):
name = models.CharField(verbose_name=u'Tag', max_length=200, unique=True)
class Entry(models.Model):
title = models.CharField(verbose_name=u'Entry title', max_length=200)
# some more fields here
tags_string = models.CharField(verbose_name=u'Tags', max_length=200, blank=True)
tags = models.ManyToManyField(Tag, blank=True)
有tags_string
,其中用户输入以逗号分隔标签。这只是一个字符串。
然后我试图通过点击“保存”在Django管理添加标签ManyToManyField:
def save(self):
super(Entry, self).save()
if self.tags_string:
for tag in tags_string.split(","):
t = Tag.objects.create(name=tag)
self.tags.add(t)
,但它不工作。 entry.tags.add(t)
通过Django shell完美工作 - 它将值添加到数据库。我认为我的save()方法有问题。
您能否建议我如何解决它?
你在哪里填写'self.tags_string'? – juliomalegria
在django管理员。它只是一个CharField,稍后在save()方法中进行解析。 – elky
我会尝试'打印self.tags_string' ..也许有问题。其他一切似乎都正确 – juliomalegria