Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模型;保存时在多个字段中保存额外项目_Django_Manytomanyfield - Fatal编程技术网

Django模型;保存时在多个字段中保存额外项目

Django模型;保存时在多个字段中保存额外项目,django,manytomanyfield,Django,Manytomanyfield,因此,我目前正在现有数据库的基础上实现一个新的标签系统 当前的标记系统使用多个字段,但是客户端希望使用逗号分隔的输入字段(CharField) 因此,我认为在不影响当前体系结构的情况下,最好的方法是启用新的逗号分隔字段,但像以前的manytomy体系结构一样删除标记 但是不管我怎么做,标记都会保存到数据库标记模型中,但不会保存在它们应该应用的条目上 简单概述: def save(self, *args, **kwargs): currTags = self.placeHolderTa

因此,我目前正在现有数据库的基础上实现一个新的标签系统

当前的标记系统使用多个字段,但是客户端希望使用逗号分隔的输入字段(CharField)

因此,我认为在不影响当前体系结构的情况下,最好的方法是启用新的逗号分隔字段,但像以前的manytomy体系结构一样删除标记

但是不管我怎么做,标记都会保存到数据库标记模型中,但不会保存在它们应该应用的条目上

简单概述:

 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)

这是因为django在模型本身之后保存m2m字段。我不确定在save()中的代码之前保存是否有帮助,请看一下d信号-它看起来正是您所需要的。

这将导致无限循环,但我确实一直在移动super.save()之后添加标记,但这并没有真正起作用。我将研究信号,似乎很有希望。get\u或\u create()返回一个查询集,您是否尝试过get\u或\u create()[0]?get\u或\u create返回(object,created\u flag)的元组