我的要求是:根据所选商店创建类别和产品表。
class Category(models.Model):
parent = models.ForeignKey("Category", blank=True, null=True,
related_name="children", verbose_name=_("Parent Category"))
name = models.CharField(verbose_name=_("Name"), max_length=255)
path = models.CharField(verbose_name=_("Path"), max_length=200)
description = models.TextField(verbose_name=_("Description"))
class CategoryStore(model.Model):
default = models.ForeignKey("Category", related_name="store_category",
verbose_name=_("Default Value"))
parent = models.ForeignKey("CategoryStore", blank=True, null=True,
related_name="children", verbose_name=_("Parent Category"))
name = models.CharField(verbose_name=_("Name"), max_length=255)
description = models.TextField(verbose_name=_("Description"))
store = models.ForeignKey("Store", related_name="store_category",
verbose_name=_("Store"))
CategoryStore模型将表名称设置为category_store_1,category_store_2等。想要在创建商店后动态创建表。如果我们在模型中添加另一个字段,则应该选择将新字段添加到所有表中。
class Product(models.Model):
name = models.CharField(verbose_name=_("Name"), max_length=255)
description = models.TextField(verbose_name=_("Description"))
class ProductStore(model.Model):
default = models.ForeignKey("Product", related_name="store_product",
verbose_name=_("Default Value"))
name = models.CharField(verbose_name=_("Name"), max_length=255)
description = models.TextField(verbose_name=_("Description"))
store = models.ForeignKey("Store", related_name="store_product",
verbose_name=_("Store"))
这也与该类别具有相同的要求。另外一个选项是,从管理表单中动态创建模型,新字段的新字段。它将是产品的属性。而不是另一个存储属性值的表,希望动态地向Product和ProductStore模型添加新字段。
答案 0 :(得分:1)
不确定我是否完全理解您的问题,但在我看来您应该重新考虑您的数据库结构。我不是很有经验但是在运行中定期向db添加表格并不好。
CategoryStore模型的表名称为category_store_1,category_store_2等。
请记住,在django 1 model< => 1 db table ,尝试这种方法:一个名为exec()
的表,其中包含来自所有商店的数据,另一个名为CategoryStore
的表具有以下结构:
CategoryStore包含您需要的所有字段以及CategoryStoreType
字段,该字段是type
的外键。 CategoryStoreType
包含每种商店类型的简短描述,例如元组CategoryStoreType
。这样,当您需要一个商店类型的新字段时,您只需将另一个字段添加到('id', 'type name')
,其中包含所有商店类型的数据。 (同样,对于表格,动态添加字段并不是那么好,imho。)