我现在使用的模型基本上有三个类。一个根类、一个附加到根类的树和一个可以附加到树中任何位置的叶节点类。
例如商店/类别/产品或商店/类别/类别/产品
产品只能链接到类别。类别可以链接到另一个类别或商店。
我会使用通用外键将类别链接到商店或其他类别,但由于类别是一棵树,它需要一个 TreeForeignKey 字段。我正在寻找如何在 models.py 中完成此操作的示例或实现相同目标的替代方法。
我现在使用的模型基本上有三个类。一个根类、一个附加到根类的树和一个可以附加到树中任何位置的叶节点类。
例如商店/类别/产品或商店/类别/类别/产品
产品只能链接到类别。类别可以链接到另一个类别或商店。
我会使用通用外键将类别链接到商店或其他类别,但由于类别是一棵树,它需要一个 TreeForeignKey 字段。我正在寻找如何在 models.py 中完成此操作的示例或实现相同目标的替代方法。
为此,您不需要 GenericForeignKey。
正常实施您的 mptt fk 并使用它来设置类别树并添加可选的商店 FK 字段以链接到商店。
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
class Shop(models.Model):
name = models.CharField(max_length=50)
class Category(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
shop = ForeignKey(Shop, null=True, blank=True)
class Products(models.Model):
name = models.CharField(max_length=50)
category = models.ForeignKey(Category)