Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2016 07:29:48

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

Django mptt в админке

Первый мини-проект на джанге. Хочу выстроить древовидную структуру в админке, примерно так:

Категория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 можно добавлять категории а сними и субкатегории, но добавить в это дерево из Продуктов не получается.



Офлайн

#2 Фев. 9, 2016 10:53:04

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Django mptt в админке

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

ноо, если очень хочется то можешь создать 3ю модель (которую будешь использовать в дереве) с `GenericForeignKey` на модели Folder и Product

Отредактировано slav0nic (Фев. 9, 2016 10:58:39)

Офлайн

#3 Фев. 10, 2016 06:45:08

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

Django mptt в админке

Да, верно
admin.site.register(Product, admin.ModelAdmin), до этого с ОРМ никогда не работал, сейчас уже начинаю немного понимать механизм.



Офлайн

#4 Фев. 13, 2016 06:46:59

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

Django mptt в админке

А нет, вру, со sqlalchemy немного работал:
https://habrahabr.ru/post/128052/



Офлайн

#5 Фев. 13, 2016 10:45:35

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Django mptt в админке

если нужна sqlalchemy, то лучше сменить фреймворк ;)
моё имхо - любой джанго девелопер должен иметь представление о каком-то 2м микрофреймворке для этого случая (pyramid, flask etc)

Отредактировано slav0nic (Фев. 13, 2016 10:46:09)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version