django - 防止 m2m_changed 更新父类的修改日期
问题描述
我有一个名为 Outfit 的类,在该类中,一个多对多的关系称为 Products,如下所示:
class Outfit(models.Model):
products = models.ManyToManyField(Product,
related_name='outfits',
blank=True)
created = models.DateTimeField(editable=False)
modified = models.DateTimeField()
class Meta:
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
return super(Outfit, self).save(*args, **kwargs)
我在 products 模型中有一个名为 product_outfit_count 的变量,它基本上跟踪使用了特定产品的服装数量。保存服装时,会调用此信号:
m2m_changed.connect(update_product_outfit_count,
sender=Outfit.products.through)
问题是,当产品的服装数量更新时,服装的修改日期也会改变。我怎样才能防止这种情况?
编辑:update_product_count 方法:
def update_product_outfit_count_task(product_ids):
Product = apps.get_model('products.Product')
with transaction.atomic():
for product in Product.objects.filter(pk__in=product_ids):
product.outfit_count = product.outfits.count()
product.save()
解决方案
推荐阅读
- spring - Spring Data 在查询 Cassandra 时使用实体类名而不是 @Table("table_name")
- reactjs - Google 跟踪代码管理器启动得太早?
- php - 使用 php 和 mysql 搜索多个关键字(其中 X 喜欢)设置限制
- mysql - 选择查询中的 MySQL 小计和总计
- python - All decimal places [Python]
- javascript - 根据页面的 onLoad 属性显示/隐藏复选框
- kotlin - 返回类型不匹配的 Kotlin 单行代码
- entity-framework - EF Core 2.1 如何更新相关表中的数据
- azure-devops - 访问其他企业中的组织
- html - 如何将 svg 从文件导入 Angular 5 中的组件?