Можно ли использовать django-mptt и GenericForeignKey? - PullRequest
1 голос
/ 15 апреля 2011

Модель, которую я сейчас использую, по сути состоит из трех классов.Корневой класс, дерево, прикрепленное к корневому классу, и листовой класс узла, который можно прикрепить в любом месте дерева.

например, Магазин / Категория / Продукт или Магазин / Категория / Категория / Продукт

Товар может быть связан только с категорией.Категория может быть связана с другой категорией или магазином.

Я бы использовал общий внешний ключ, чтобы связать категорию с магазином или другой категорией, но поскольку Категория является деревом, для него необходимо поле TreeForeignKey.Я ищу пример того, как это можно сделать в models.py или альтернативном способе достижения того же самого.

1 Ответ

0 голосов
/ 15 апреля 2011

Для этого вам не нужен GenericForeignKey.

Реализуйте свои mptt fk's как обычно и используйте их для настройки деревьев категорий и добавьте дополнительное поле 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)
...