Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django:查询调用多表继承的多个属性_Django_Inheritance_Orm_Many To Many_Generics - Fatal编程技术网

django:查询调用多表继承的多个属性

django:查询调用多表继承的多个属性,django,inheritance,orm,many-to-many,generics,Django,Inheritance,Orm,Many To Many,Generics,我读过,,但不太清楚我的案例的最佳实践是什么。 我是一个数据库n00b试图学习,所以耐心是感激的。我的情况如下: 3类公司:制造商、经销商、服务修复(共享约10个属性) 5类产品:填充动物、自行车、芭比娃娃(也共享一些属性) 所以为了保持干爽,我尝试了多表继承: # company.models.py class GenericCompany(models.Model): name, description, address, etc class Manufacturer(Gen

我读过,,但不太清楚我的案例的最佳实践是什么。 我是一个数据库n00b试图学习,所以耐心是感激的。我的情况如下:

  • 3类公司:制造商、经销商、服务修复(共享约10个属性)
  • 5类产品:填充动物、自行车、芭比娃娃(也共享一些属性)
所以为了保持干爽,我尝试了多表继承:

# company.models.py

class GenericCompany(models.Model):
    name, description, address, etc

class Manufacturer(GenericCompany): #can manufacture different things
    stuff_specific_to_manufacturers
    product = models.ManyToMany(GenericProduct)

class Reseller(GenericCompany): #can sell different things
    stuff_specific_to_manufacturers
    product = models.ManyToMany(GenericProduct)

etc for ServiceNRepair
同样,对于产品

# product.models.py

class GenericProduct(models.Model):
    name, price, color, etc

class StuffedAnimal(GenericProduct):
    fluffyness, ears_or_not, etc


class Bicycle(GenericProduct):
    wheel_diameter, weight, etc


etc for Barbies
现在我需要执行如下查询

  • 显示所有红色的产品(这很简单)
  • 这个制造商生产什么产品
  • 查找经销商X销售的所有自行车

但我可以用M2M这样做吗<代码>制造商.objects.filter(product\u icontains='something')这样的东西不起作用。那么,我完全走错了路?使用ContentTypes是典型的解决方案吗?我只想知道下一步要研究什么来解决这个问题的一些方向,这个问题肯定很普遍。任何提示,谢谢。谢谢。

您可以做一些事情,如
制造商.objects.filter(product\uu name\uu icontains='something')
,只需在product中添加字段的名称。

尽管您提到的查询甚至不需要该名称