Добавьте галерею изображений как TabularInline в другую модель TabularInline

Я хочу создать модель продукта, которая имеет некоторые Inline запрос, как в каждом продукте вы можете добавить различные атрибуты, как цвет, размер, бренд, ... и каждый вариант может иметь specefic галерея изображений Я использую две галереи модели как TabularInline вариации и вариации как TabularInline продукта Но это не показывает мне tha галерея изображений как tabularinline в вариации, Вот мой код:

productapp.models:

class Product(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=250, unique=True)
    description = RichTextUploadingField(null=True)
    short_description = RichTextUploadingField(null=True)
    price = models.IntegerField()
    sku = models.CharField(max_length=200, null=True, blank=True)
    dimenstions = models.CharField(max_length=200, null=True, blank=True)
    category = models.ManyToManyField(Category, related_name='category')
    tag = models.ManyToManyField(Tags, related_name='tag')
    attribute = models.ManyToManyField(Attribute, related_name='attribute')
    image = models.ImageField(upload_to='shop/image', null=True, blank=True)


    def __str__(self):
        return self.title   


class Variant(models.Model):
    title = models.CharField(max_length=200)
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    variations = models.ForeignKey(Variations, on_delete=models.SET_NULL, null=True, blank=True)
    regular_price = models.IntegerField()
    sale_price = models.IntegerField(null=True, blank=True)
    sku = models.CharField(max_length=200, null=True, blank=True)
    stock_quantity = models.IntegerField(default=0)
    image_id = models.IntegerField(blank=True, null=True, default=0)

    def __str__(self):
        return self.title



class Gallery(models.Model):
    title = models.CharField(max_length=200)
    image = models.ImageField(upload_to='shop/gallery', null=True, blank=True)
    product = models.ForeignKey(Variant, null=True, on_delete=models.SET_NULL, related_name='gallery')


    def __str__(self):
        return self.title

Admin.py:

class GalleriesInline(admin.TabularInline):
    model = Gallery
    extra = 1
    readonly_fields = ('pk',)
    formfield_overrides = {
            models.CharField: {'widget': TextInput(attrs={'size':'30'})},
        }

class VariantInline(admin.TabularInline):
    model = Variant
    inlines = [GalleriesInline]
    extra = 1
    readonly_fields = ('image_tag',)
    show_change_link = True


@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    form = ProductForm
    inlines = [VariantInline]
    prepopulated_fields = {"slug": ["title"]}
    list_display = ('thumbnail_tag', 'title')
    readonly_fields = ('image_preview',)

    def image_preview(self, obj):
        # ex. the name of column is "image"
        if obj.image:
            return mark_safe('<img src="{0}" width="150" height="150" style="object-fit:contain" />'.format(obj.image.url))
        else:
            return '(No image)'
    
    image_preview.short_description = 'Preview'

Я использовал TabularInline, но он не сработал. Кто-нибудь, помогите мне в этой ситуации, что я должен сделать, чтобы иметь галерею изображений для каждой вариации каждого продукта?

После долгих поисков я нашел способ решить эту проблему, Лучшее, что вы можете использовать для этой проблемы - это вложенный инлайн-пакет:

pip install django-nested-inline
Вернуться на верх