我有这些模型(简化):
class Product(TimeStampedModel):
product_id = models.AutoField(primary_key=True, )
shop = models.ForeignKey('Shop', related_name='products', to_field='shop_name', on_delete=models.CASCADE)
category = models.ForeignKey('Category', related_name='products', to_field='category_name', on_delete=models.SET_NULL)
brand = models.ForeignKey('Brand', related_name='products', to_field='brand_name', on_delete=models.CASCADE)
class Brand(models.Model):
brand_name = models.CharField(max_length=50)
shops = models.ManyToManyField('Shop', related_name='shops')
categories = models.ManyToManyField('Category', related_name='categories')
class Category(models.Model):
category_name = models.CharField(max_length=128)
shops = models.ManyToManyField('Shop')
class Shop(models.Model):
shop_name = models.CharField(max_length=30)
在admin
中,我试图手动更改一堆选定Products
的Category
(我有一个自定义函数)。但这里我看到了两个问题:
1) 必须更新Brand->Category
中的M2M关系,如果没有Brand
与此Category
。
2) 必须更新Category->Shop
中的M2M关系,如果Shop
中没有选择此Category
。
如何以最好的方式做到这一点?我知道这可能是某种Django信号的用法,特别是m2m_changed
,但我无法理解谁是信号的发射器,谁是接收器,以及如何在一个表中更改后更新多个表。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐