我有:
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”,如何知道它的名称?
查询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] 删除。
我来说两句