Найти - Пользователи
Полная версия: Django mptt в админке
Начало » Python для экспертов » Django mptt в админке
1
lobster
Первый мини-проект на джанге. Хочу выстроить древовидную структуру в админке, примерно так:

Категория1–>
Товар1
Товар2
Категория2–>
Товар6

Сам файл модели models.py:
from django.db import models
 
# Create your models here.
import mptt
from mptt.models import MPTTModel, TreeForeignKey
 
class Folder(MPTTModel):
        name = models.CharField(max_length=50, unique=True, verbose_name=u'Name')
        parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
 
        def __str__(self):
                return self.name
 
        class MPTTMeta:
                parent_attr = 'parent'
 
class Product(models.Model):
        name = models.CharField(max_length=50, db_index=True, verbose_name=u'PName')
        price = models.CharField(max_length=8, db_index=True, verbose_name=u'Price')
        parent = models.ForeignKey(Folder, blank=True, null=True, related_name='child_product')
 
        def __str__(self):
                return self.name
 
mptt.register(Folder)
mptt.register(Product)

А это admin.py

from django.contrib import admin
from mptt.admin import MPTTModelAdmin
from .models import Folder, Product
 
admin.site.register(Folder, MPTTModelAdmin)
admin.site.register(Product, MPTTModelAdmin)

Не получается совместить две таблицы в одно дерево в админке, эти две таблицы редактируются раздельно, причем если редактировать пункт Folders можно добавлять категории а сними и субкатегории, но добавить в это дерево из Продуктов не получается.
slav0nic
а должны?
при построении дерева выводи продукты из нужного Фолдера
+ admin.site.register(Product, MPTTModelAdmin) лишнее, у текбя Product отнаследован от дефолтной модели джанги
в админке это делать нет смысла

ноо, если очень хочется то можешь создать 3ю модель (которую будешь использовать в дереве) с `GenericForeignKey` на модели Folder и Product
lobster
Да, верно
admin.site.register(Product, admin.ModelAdmin), до этого с ОРМ никогда не работал, сейчас уже начинаю немного понимать механизм.
lobster
А нет, вру, со sqlalchemy немного работал:
https://habrahabr.ru/post/128052/
slav0nic
если нужна sqlalchemy, то лучше сменить фреймворк ;)
моё имхо - любой джанго девелопер должен иметь представление о каком-то 2м микрофреймворке для этого случая (pyramid, flask etc)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB