这是我在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'
当我将注释实例添加到replied_to时,它将添加到父对象,但被复制的实例在其replied_to字段中保留了指向相关对象的指针。 有没有一种方法可以删除指向相关评论的指针,而又不删除父级的回复实例?
答案 0 :(得分:2)
是的,您可以在此处使用.remove(..)
方法:
mycomment.replied_to.remove(othercomment)
这将不从数据库中删除othercomment
,但它将不再是replied_to
中ManyToManyField
的一部分。
请注意,默认情况下,与ManyToManyField
的{{1}}关系是对称。这意味着,如果一个评论位于另一个评论的self
中,则另一个评论的replied_to
也包含第一个评论。您可以将symmetrical=…
parameter [Django-doc]设置为replied_to
以使其成为不对称:
False