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

标签 python django

这是我在 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'

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

最佳答案

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

mycomment.replied_to<b>.remove(</b>othercomment<b>)</b>

不会从数据库中删除othercomment,但它将不再是ManyToManyField<中replied_to的一部分.

请注意,默认情况下,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'<b>, symmetrical=False</b>, related_name='replied')
    class Meta:
        db_table = 'Comment'

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

相关文章:

python - 正确设计 Multiprocessing.Manager 自定义对象

python - 连接后如何在 Pyspark Dataframe 中选择和排序多个列

python - 使用 Django 测试本地主机中的子域

python - Django:删除ForeignKey相关实例后如何保存模型实例?

python - 此错误或一直显示 : integrityError, UNIQUE 约束失败 : blog_post.author_id

python - 从 csv 中读取 python 的标题

python - 在 Theano 中打印变量表达式

Django:Haystack 或 ORM

python - 将 Django 模型传递给模板

django - 保存 Django FormWizard