gpt4 book ai didi

python - 从多对多字段中删除,但不从相关模型中删除

转载 作者:行者123 更新时间:2023-12-04 10:47:27 27 4
gpt4 key购买 nike

这是我在 Django 中的代码,


class Comment(models.Model):
text = models.CharField(max_length=400)
writer = models.ForeignKey(Email, on_delete=models.DO_NOTHING)
replied_to = models.ManyToManyField('self', related_name='replied')
class Meta:
db_table = 'Comment'

当我将评论的实例添加到回复时,它会添加到父级,但回复的实例在其回复的字段中保留了一个指向相关对象的指针。
有没有办法在不从父级删除回复实例的情况下删除指向相关评论的指针?

最佳答案

是的,您可以使用 .remove(..)方法在这里:

mycomment.replied_to.remove(othercomment)

这不会删除 othercomment来自数据库,但它将不再是 replied_to 的一部分在 ManyToManyField .

请注意,默认情况下 ManyToManyFieldself 的关系是对称的。这意味着如果一个评论在 replied_to 中另一条评论,然后是另一条评论的 replied_to还包含第一条评论。您可以设置 symmetrical=… parameter [Django-doc]False使其不对称:
class Comment(models.Model):
text = models.CharField(max_length=400)
writer = models.ForeignKey(Email, on_delete=models.DO_NOTHING)
replied_to = models.ManyToManyField('self', symmetrical=False, related_name='replied')
class Meta:
db_table = 'Comment'

关于python - 从多对多字段中删除,但不从相关模型中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59635966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com