是否可以使用django-mptt和GenericForeignKey?

时间:2011-04-14 20:07:47

标签: django django-models django-mptt

我目前使用的模型基本上有三个类。根类,附加到根类的树和可以附加到树中任何位置的叶节点类。

e.g。商店/类别/产品或商店/类别/类别/产品

产品只能与类别相关联。 类别可以链接到另一个类别或商店。

我会使用通用外键将类别链接到商店或其他类别,但由于Category是树,它需要TreeForeignKey字段。我正在寻找在models.py中如何实现这一目标的示例,或者是实现相同目标的另一种方法。

1 个答案:

答案 0 :(得分:0)

您不需要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)