Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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
Python 如何编写动态Django模型?_Python_Django - Fatal编程技术网

Python 如何编写动态Django模型?

Python 如何编写动态Django模型?,python,django,Python,Django,我想要的是,接受建议,以定义一个可重复使用的产品模型,对于一个购物网站应用程序,现在我知道该商店将与“服装”进行商业交易,因此该产品模型将具有“季节或系列”关系,但在未来,我应该使用该应用程序与X产品进行商业交易,例如:“汽车”,它们具有“机械规格”关系 所以我在考虑元模型,创建一个由键/值定义的通用模型,但是,如何建立关系呢 但是,您是专家社区,我希望您能帮助我了解更多。一个流行的选择是使用类似于标记的东西。因此,您将拥有所有项目的通用内容,如项目ID、名称、说明、价格。然后您将在另一个表中拥

我想要的是,接受建议,以定义一个可重复使用的产品模型,对于一个购物网站应用程序,现在我知道该商店将与“服装”进行商业交易,因此该产品模型将具有“季节或系列”关系,但在未来,我应该使用该应用程序与X产品进行商业交易,例如:“汽车”,它们具有“机械规格”关系

所以我在考虑元模型,创建一个由键/值定义的通用模型,但是,如何建立关系呢


但是,您是专家社区,我希望您能帮助我了解更多。

一个流行的选择是使用类似于标记的东西。因此,您将拥有所有项目的通用内容,如项目ID、名称、说明、价格。然后您将在另一个表中拥有一些更通用的标记或描述的标记,与这些项目关联。您可以ld有一个表示季节或汽车规格等的标签


当然,这真的取决于您如何设计系统来处理这些附加信息。

定义一个对象和许多其他类型对象之间关系的一种方法是使用a和。我猜您将寻找一个带有一些更具体的相关对象(如
夹克
)的
产品看起来像这样:

class Product(models.Model):
    price = models.FloatField()
    description = models.TextField()
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    details = generic.GenericForeignKey('content_type', 'object_id')

class Jacket(models.Model):
    size = models.PositiveIntegerField()
    color = models.CharField(max_length=25)
这样,您就可以定义任意数量的类似于
夹克
的型号,这些型号可以与您的产品关联

jacket = Jacket(size=69, color="pink")
jacket.save()
prod = Product(price=0.99)
prod.details = jacket  # It's like magic!
prod.save()

这确实增加了创建大量模型的额外工作,但它也允许您对存储的数据和存储方式非常有创意。

如果我们这样运行:IntegrityError:(1048,“content\u type\u id”列不能为空)你是对的。我没有运行那一段代码,订单已经关闭。我已经修复了它,以便它能够正常工作。谢谢你,杰克M。那么反过来怎么办?都在文档中。