Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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:自动填充模型的m2m字段_Django_Django Models - Fatal编程技术网

Django:自动填充模型的m2m字段

Django:自动填充模型的m2m字段,django,django-models,Django,Django Models,我有一种类型的模型(称为标签): 在另一个模型中用作m2m字段: class Order(models.Model): user = models.ForeignKey(...) type = models.CharField(...) tag = models.ManyToManyField(Tag, blank=True) 现在,假设创建了一个订单,并且程序希望自动为其分配一些标记。比如说,程序想要将Order.type添加到它的Order.tag列表中。(假设Or

我有一种类型的模型(称为标签):

在另一个模型中用作m2m字段:

class Order(models.Model):
    user = models.ForeignKey(...)
    type = models.CharField(...)
    tag = models.ManyToManyField(Tag, blank=True)
现在,假设创建了一个订单,并且程序希望自动为其分配一些标记。比如说,程序想要将
Order.type
添加到它的
Order.tag
列表中。(假设
Order.type
恰好与有效的
Tag.name
相同) 我尝试了订单的
post\u save
但没有成功:

def order_post_save_reciever(sender, instance, *args, **kwargs):
    #..., disconnect, ...
    instance.tag.add(Tag.objects.filter(name=instance.type))
    instance.save()
    #.... reconnec, t.....
,我必须使用,但我不知道如何使用。你知道如何在这里添加标签吗?
非常感谢您的帮助。

删除实例。保存(),因为它将创建一个循环。

为了减少不相关的代码,这里不显示断开和重新连接行。为什么必须使用信号?这两个模型不是都在您自己的项目中吗?另外,你链接的答案显然没有读过,因为它明确说明不要使用
post\u save
@Melvyn可能我没有正确解释。是的,我阅读了链接并意识到
post\u save
不是正确的位置。此外,我不知道是否/如何使用该信号。这就是为什么我问:)。我猜是你没看错问题。你的解决方案是什么?(如果你知道的话)。这就是我们所追求的,我的解决方案是不使用信号,如果两者都是我的模型。如果保存订单,则可以在其保存方法中添加标记。为什么要使用信号?事实上,如果订单是我的模型,我不在乎谁的模型标签是,我不必使用信号。
def order_post_save_reciever(sender, instance, *args, **kwargs):
    #..., disconnect, ...
    instance.tag.add(Tag.objects.filter(name=instance.type))
    instance.save()
    #.... reconnec, t.....