python - 当有多个相关字段加入时,我的 django 模型加入了错误的字段
问题描述
我的产品模型与类别模型有两种不同的关系:
- 一对一
- 一对多通过 ProductShadowCategory 表。
现在的情况是,当我尝试使用第二个关系进行获取时,我得到了第一个关系的结果。
例如,这是我要打印的内容:
Category.objects.get(slug="root").shadow_products.all()
但它转换为以下 sql :
print(Category.objects.get(slug="root").shadow_products.all().query)
SELECT `product_management_product`.`id`, `product_management_product`.`slug`, `product_management_product`.`category_id`, `product_management_product`.`brand_id` FROM `product_management_product` WHERE `product_management_product`.`category_id` = 720
我的模型如下所示:
class Category(SlugableModel):
#...
shadow_products = models.ManyToManyField("product_management.Product", through="product_management.ProductShadowCategory")
class Product(SlugableModel):
#...
category = models.ForeignKey(Category,on_delete=models.CASCADE, related_name="products", validators=[leaf_category])
class ProductShadowCategory(MyModel):
category = models.ForeignKey(Category,on_delete=models.CASCADE)
product = models.ForeignKey(Product,on_delete=models.CASCADE)
class Meta:
unique_together = ('category', 'product')
解决方案
推荐阅读
- python - 当前行 QTableview 中第一列的 Pyqt5 项不返回正确的值
- c# - 如何从命令行运行 C# Web 服务?
- c++ - 从锯齿状数组中读取
- openstack - 如何在计算中识别虚拟机管理程序使用哪些 vcpus 以及 VNF/VM 使用哪些 vcpus?
- c - 将用户生成的节点添加到 C 中链表的末尾
- laravel - Laravel 和 ngrok:url 域对于路由和资产不正确
- python - 如何在执行其他功能之前更新 Tkinter 标签文本?
- linux - 将多个文件附加到单个输出文件,但文件之间有消息
- java - Spring @Valid 在 Post 控制器(多部分)中无法正常工作
- javascript - 将图标放在按钮旁边