Django:自动填充模型的m2m字段
我有一种类型的模型(称为标签): 在另一个模型中用作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
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.....