如何在Django中更新M2M字段

伊凡·波什乔夫(Ivan Borshchov)

我有:

class MyUser(Model):
    today_ref_viewed_ips = ManyToManyField(
        UniqAddress, 
        related_name='today_viewed_users', 
        verbose_name="Adresses visited referal link today")
    ...

应每天的某些严格要求,我这样做:

for u in MyUser.objects.all():
    u.today_ref_viewed_ips.clear()

可以在带有更新的DB服务器上完成吗?

MyUser.objects.all().update(...)

好的,我无法更新,谢谢。但是我唯一需要做的就是截断m2m内部表,是否可以从Django执行?没有mysql的控制台“ SHOW TABLES”,如何知道它的名称?

拉胡尔·古普塔(Rahul Gupta)

查询1:

不,您不能使用.update()方法更新ManyToManyField

Django的.update()方法不支持ManyToManyField。

根据有关一次更新多个对象的部分的文档

您只能ForeignKey使用此方法设置非关系字段和字段。要更新非关系字段,请提供新值作为常量。要更新ForeignKey字段,请将新值设置为您要指向的新模型实例。

查询2:

如果要删除m2m表的所有对象,则可以使用.delete()queryset方法。

MyModel.objects.all().delete() # deletes all the objects

另一种方法是直接执行原始SQL。此方法比以前的方法快。

from django.db import connection
cursor = connection.cursor()
cursor.execute("TRUNCATE TABLE table_name")

查询3:

要获取模型的表名,可以使用db_table模型Meta选项。

my_model_object._meta.db_table # gives the db table name

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Django中使用QuerySet过滤最新的m2m对象

如何在Django管理中订购只读M2M字段

Django:使用“输入”列表中的每个值进行M2M字段查询

django m2m字段返回对象而不是键

如何在Dax中过滤M2M表

如何在Django中通过模型继承处理M2M关系的保存后信号?

在Django中检查M2M字段是否为空

模型表单中的Django M2M字段?

如何检查Django中m2m字段中值的出现?

在djnago中设置M2M对象的字段值

Django,如何在没有M2M的模型中拥有数组?

Django DetailView是否可以在M2M字段中访问用户以限制访问?

如何从多个m2m字段中为queryset(select2)准备列表

使用表单访问Django模板中的M2M字段值

在Django中以M2M关系修改对象

如何在PowerPivot中创建M2M关系

如何在Sonata Admin中配置m2m关系?

Django:删除对象中的M2M关系

Django:在信号中获取与M2M相关的对象

Django模型在save()中返回更新后的值,而不是M2M实例中返回的旧值

如何使用 commit=False 在 Django 上保存 m2m 字段?

更新具有 m2m 字段的模型实例

如何使 M2M 关系成为必填字段?

如何在 Django 中显示有关 M2M 字段的附加字段或覆盖 select2-results__option

如何在modelForm中保存实例并更新反向M2M字段

更新 m2m,外键字段到模型在 DRF 中不起作用

有没有办法在 Django 的 M2M 字段中存储重复的外键?

如何从 django 表单中的下拉列表中选择多个数据(字段在数据库中具有 M2M 关系)?

如何从 Django 中的嵌套 M2M 字段查询记录?