python - 使用 TreeQuerySet 进行多对多字段反向查找
问题描述
我没有解决我的问题,我尝试了多个教程,但无处可去。我看过这些地方(和其他地方) -
https://www.revsys.com/tidbits/tips-using-djangos-manytomanyfield/
https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/
https://readthedocs.org/projects/django-mptt/downloads/pdf/latest/
class CategoryTree(MPTTModel): title = models.CharField(max_length=120, default="no name") slug = models.SlugField(blank=True) timestamp = models.DateTimeField(auto_now_add=True) active = models.BooleanField(default=True) parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children') products = models.ManyToManyField(Product, blank=True) class MPTTMeta: order_insertion_by = ['title'] class Product(models.Model): title = models.CharField(max_length=120) slug = models.SlugField(blank=True, unique=True) description = models.TextField() price = models.DecimalField(decimal_places=2, max_digits=20, default=39.99) image = models.ImageField(upload_to=upload_image_path, null=True, blank=True) featured = models.BooleanField(default=False) active = models.BooleanField(default=True) timestamp = models.DateTimeField(auto_now_add=True) is_digital = models.BooleanField(default=False) # User Library
这些只是我失败的一些尝试——
# print(CategoryTree.objects.get(products= "13").first())
# print(Product.objects.all().filter(id="13"))
# # print(Product.objects.all().filter(id="13").product)
# print(Product.objects.all().filter(id="13").all().CategoryTree_set.all())
# print(CategoryTree.objects.filter(title='LasVegas'))
假设在 Product 模型中我有一个标题为 Iron Man Toy 的项目,我需要找到一种方法来找到它在 CategoryTree 模型中所属的类别(或多个类别)。我有一个接近解决我的问题的解决方案,但如果该项目属于两个单独的类别,那么我会收到一条错误消息。
更新
我想找出哪些产品属于 LasVegas 类别。这两行代码将打印 ID 为 15 的类别产品属于 -
# print(CategoryTree.objects.get(products= 15))
# print(CategoryTree.objects.get(products= "15"))
但是,如果产品属于两个类别,则会出现问题。所以我回到图纸并尝试进行反向查找,但没有奏效。
这是我的最终解决方案。下一阶段将是让 Python 找出展示产品的 ID,并将该值放在当前 15 的位置。
try:
CategoryTree.objects.filter(title="LasVegas").get(products= 15)
self.template_name = "products/detail2.html"
except:
pass
解决方案
推荐阅读
- java - Java 自定义标签不起作用/使用问题
- tensorflow - 如何解决 TensorFlow 2.0 的错误?
- clojure - 在 Clojure / Ring / HttpKit 应用程序中获取 POSTed 数据
- ruby - 如何使用建立连接创建类以建立数据库连接 - RUBY
- java - 切换抽屉导航栏
- javascript - 替换数组的字段
- google-cloud-platform - 将 rasberry pi 与谷歌云 AutoML 和/或 Vision API 集成
- mongodb - MongoDB:没有 KEY 的数学运算
- c - C 编程语言 FOR 循环的问题
- python - Django Custom UserModel在超级用户更改密码期间出错,即用户我被删除