2

現在使用しているモデルには、基本的に 3 つのクラスがあります。ルート クラス、ルート クラスにアタッチされたツリー、およびツリー内の任意の場所にアタッチできるリーフ ノード クラス。

例: ショップ/カテゴリ/製品またはショップ/カテゴリ/カテゴリ/製品

製品はカテゴリにのみリンクできます。カテゴリは、別のカテゴリまたはショップにリンクできます。

カテゴリをショップまたは別のカテゴリにリンクするには、一般的な外部キーを使用しますが、Category はツリーであるため、TreeForeignKey フィールドが必要です。これを models.py で行う方法、または同じことを達成する別の方法の例を探しています。

4

1 に答える 1

0

このためにGenericForeignKeyは必要ありません。

通常どおりmpttfkを実装し、それを使用してカテゴリツリーを設定し、オプションのショップ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)
于 2011-04-15T06:29:47.073 に答える