Tash1moto
@Tash1moto

Как объединить и отобразить две модели django в одной модели admin?

Всем привет, нужна помощь по админке django.

Есть продукт, у продукта может быть 100+ цветов.
Продукт одна таблица, цвета другая таблица
Как при создании продукта через админку django, добавить нужные цвета из таблицы цветов для продукта, не переходя в другую модель цветов?

Визуализация вопроса:

ec8b3-clip-82kb.jpg?nocache=1



models.py

#coding:utf-8
from django.db import models


class Products(models.Model):
    product_name = models.CharField(max_length=50,default='none',verbose_name='Название')
    about = models.CharField(max_length=50,default='none',verbose_name='Информация')
    class Meta:
        verbose_name = "Продукт"
        verbose_name_plural='Продукты'
    def __unicode__(self):
        return self.product_name



class Colors(models.Model):
    s = models.ForeignKey(Products)
    white = models.BooleanField(default=False)
    yellow= models.BooleanField(default=False)
    green= models.BooleanField(default=False)
    class Meta:
        verbose_name_plural='Цвета'
    ### 100+ colors
  • Вопрос задан
  • 2754 просмотра
Пригласить эксперта
Ответы на вопрос 3
crazyzubr
@crazyzubr
Python backend-developer
InlineModelAdmin objects с параметром extra
Ответ написан
Комментировать
kashyapov
@kashyapov
Изучаю Python и Django, делюсь опытом
Привет!
Если я правильно понял вопрос, то можно применить admin.StackedInline

admin.py
from django.contrib import admin
from models import Colors, Products

class ColorsInLine(admin.StackedInline):
    model = Colors

@admin.register(Products)
class ProductsAdmin(admin.ModelAdmin):
    inlines = [ColorsInLine,]
Ответ написан
Комментировать
desperadik
@desperadik
Истина где-то рядом.
Вам нужно создать пополняемый справочник цветов. И вставить его инлайном в админке. (Только мне кажется что получить двойная вложенность, в джанге-админке вроде тольок 1 уровень инлайна может быть.)

class ProductColors(models.Model):
    s = models.ForeignKey(Products)
    colors = models.ManyToManyField(to=Colors)

class Colors(models.Model):
    name = models.CharField(verbose_name="Название цвета")

Вроде типо того.
В admin.py создать TabularInline и вставить его админ-класс Products.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы