假设我有一个django-mptt模型,如下所示:
class Category(MPTTModel):
name = models.CharField(max_length=50)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)这些类别(和子类别)将作为项目中使用的类别的一种模板。当用户开始一个新项目时,用户将选择要使用的目录、子类别等。用户还应该能够添加/编辑类别。问题是,它们需要特定于项目,以便当创建另一个项目时,用户将从原始/默认类别开始。
有没有办法复制MPTTModel/数据库表,以创建特定于项目的表,其中可以编辑/添加类别,而不会影响默认类别?
我可以想出一种方法来解决这个问题,那就是添加如下内容
projects = models.ManyToManyField(Project)并创建一个默认/模板项目。这里最好的方法是什么?
发布于 2016-11-01 01:09:44
您有一个正确的想法,即拥有一个" projects“字段来将一个类别与各种项目相匹配。使用具有ForeignKey关系的“项目”字段可能会更好:
project = models.ForeignKey(project)然后,您可以为每个新项目复制Category,创建一个新的数据库行。这样,如果有人在项目foo上更改了Category栏,也不会影响项目baz,该项目也可以使用Category栏。两个类别栏条目在数据库中将具有不同的主键。
你也可以有一个名为"default“的项目,当用户创建一个新项目时,所有的"default”类别都可以复制。
当然,您需要代码来仅显示用户正在处理的项目中的类别,并在创建新项目时复制这些类别。
https://stackoverflow.com/questions/40338971
复制相似问题