在我的 Django 專案中,連接了 PostgreSQL 資料庫,我創建了這兩個模型:
class Results(models.Model):
device = models.ForeignKey(Device, null=True, on_delete=models.SET_NULL)
proj_code = models.CharField(max_length=400)
res_key = models.SlugField(max_length=80, verbose_name="Message unique key", primary_key=True, unique=True)
read_date = models.DateTimeField(verbose_name="Datetime of vals readings")
unit = models.ForeignKey(ModbusDevice, null=True, on_delete=models.SET_NULL)
class VarsResults(models.Model):
id = models.AutoField(primary_key=True)
key_res = models.ForeignKey(Results, related_name="keyres", on_delete=models.CASCADE)
var_id = models.ForeignKey(ModbusVariable, null=True, on_delete=models.SET_NULL)
var_val = models.CharField(max_length=400, blank=True)
var_val_conv = models.CharField(max_length=100, blank=True, null=True)
base_byte_order = models.CharField(max_length=15)
var_hash = models.CharField(max_length=400)
has_error = models.BooleanField(default=False)
所以 VarsResults 有一個結果的外鍵,我會從基于結果的條件開始洗掉兩個表中的一些記錄,例如
DELETE RECORDS FROM RESULTS IF RESULTS read_date < VALUE
我也會自動洗掉 VarsResults 表中的所有相關記錄。django ORM 中是否有方法或直接使用 SQL 來實作此目的?
非常感謝提前
uj5u.com熱心網友回復:
由于您on_delete=models.CASCADE在您的 中ForeignKey,每當您洗掉一個Results物件時,所有相關的物件VarsResults也將被洗掉。您只需要洗掉Results,您就可以通過一個查詢來完成:
Results.objects.filter(read_date__lt=value).delete()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384214.html
標籤:姜戈 PostgreSQL的
上一篇:獲取不同行中沒有某些值的暫存器
