python - 如何在 Django 中创建具有尺寸和颜色的产品变体(带有多个图像)?
问题描述
我的问题是,如何为尺寸和颜色创建产品的产品变体,并且该产品的每个颜色变体都有多个图像?就像亚马逊的做法一样。
我的管理员.py
from django.contrib import admin
from .models import Product, Images
class ProductImageInline(admin.TabularInline):
model = Images
extra = 7
class ProductAdmin(admin.ModelAdmin):
list_display = ['image_tag', 'title', 'category']
list_filter = ['category']
readonly_fields = ('image_tag',)
inlines = [ProductImageInline]
#prepopulated_fields = {'slug': ('title',)}
admin.site.register(Product, ProductAdmin)
admin.site.register(Images)
我的模型.py
from ckeditor_uploader.fields import RichTextUploadingField
from django.db import models
from django.urls import reverse
from django.utils.safestring import mark_safe
class Product(models.Model):
brand = models.CharField(max_length=50)
title = models.CharField(max_length=120)
keywords = models.CharField(max_length=120)
description = models.TextField()
image = models.ImageField(upload_to='images/', null=False)
mrp = models.DecimalField(decimal_places=2, max_digits=10)
price = models.DecimalField(decimal_places=2, max_digits=10)
detail = RichTextUploadingField()
slug = models.SlugField(blank=True, unique=True)
created_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
def image_tag(self):
if self.image.url is not None:
return mark_safe('<img src="{}" height="50"/>'.format(self.image.url))
else:
return ""
image_tag.short_description = 'Image'
class Images(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
title = models.CharField(max_length=50, blank=True)
image = models.ImageField(blank=True, upload_to='images/')
def __str__(self):
return self.title
我的意见.py
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
from .models import Product, Images
def product_detail(request, id, slug):
product = Product.objects.get(pk=id)
images = Images.objects.filter(product_id=id)
context = {
'product': product,
'images': images,
}
return render(request, "product_detail.html", context)
解决方案
推荐阅读
- liquibase - 在 Liquibase 中运行包 sql 文件
- python - join() 函数有问题吗?
- javascript - 路径必须是字符串或缓冲区
- google-sheets - 谷歌表格 - 动态查找总和
- firebase - 如何计算/计算 get() 嵌套 get() 的 Firestore 安全规则访问限制?
- download - GNU Emacs 下载的 gpg 验证失败 - 我做对了吗?
- firebase - Android Firebase:生成发布证书指纹时出错
- java - 使用Graphics每帧清屏不是一个好主意吗?(爪哇)
- c# - 脚本组件缺少 oracle 参考
- c# - 当等待的一部分具有 ConfigureAwait false 时使用 MessageBox