python3+django2+xadmin+djangoUeditor +stdimage的设计的天天生鲜项目(二)

3 篇文章 0 订阅
3 篇文章 0 订阅

1、创建商品app,goods,注意要注册到settings中INSTALLED_APPS中

2、创建goods的models,注意图片类型并非使用的django的ImageFields类型,而是使用的stdImageField,需要在settings中注册,并创建timage_img 和商品的image_img方法,为了之后在xadmin中能显示出图片,而不是路径

# Create your models here.
from django.db import models
# 将一对多的关系维护在GoodsInfo中维护,另外商品信息与分类信息都属于重要信息需要使用逻辑删除
from DjangoUeditor.models import UEditorField
from stdimage.models import StdImageField


class TypeInfo(models.Model):
    # 商品分类信息  水果 海鲜等
    isDelete = models.BooleanField(default=False)

    tpic = StdImageField(
        default='goods/default.jpg',
        upload_to="goods/%Y/%m",
        verbose_name=u"分类图标",
        variations={'thumbnail': {'width': 100, 'height': 75}},
        max_length=100)
    ttitle = models.CharField(max_length=20, verbose_name="分类")

    class Meta:
        verbose_name = "商品类型"
        verbose_name_plural = verbose_name

    def url(self):
        if self.tpic:
            return self.tpic.url
        else:
            return "url为空"

    def timage_img(self):
        if self.tpic:
            href = self.tpic.url  # 点击后显示的放大图片
            src = self.tpic.thumbnail.url  # 页面显示的缩略图
            # 插入html代码
            image_html = '<a href="%s" target="_blank" title="传图片"><img alt="" src="%s"/>' % (href, src)
            return image_html
        else:
            return '上传图片'

    timage_img.short_description = '图片'
    timage_img.allow_tags = True  # 列表页显示图片

    def __str__(self):
        return self.ttitle


class GoodsInfo(models.Model):
    # 具体商品信息
    isDelete = models.BooleanField(default=False)  # 逻辑删除
    gtitle = models.CharField(max_length=20, verbose_name="商品名称", unique=True)
    gpic = StdImageField(
        default='goods/default.jpg',
        upload_to="goods/%Y/%m",
        verbose_name=u"商品图片",
        variations={'thumbnail': {'width': 100, 'height': 75}},
        max_length=100)
    gprice = models.DecimalField(max_digits=5, decimal_places=2, verbose_name="商品价格",
                                 max_length=20)  # 商品价格小数位为两位,整数位为3位
    gunit = models.CharField(max_length=20, default='500g', verbose_name="单位重量")
    gclick = models.IntegerField(verbose_name="点击量", blank=False, default=1)
    gjianjie = models.CharField(max_length=200, verbose_name="简介")
    gkucun = models.IntegerField(verbose_name="库存")
    gcontent = UEditorField(verbose_name=u"商品详情", width=600, height=300, imagePath="goods/ueditor/",
                            filePath="goods/ueditor/", default='')
    gtype = models.ForeignKey(TypeInfo, on_delete=models.CASCADE, verbose_name="分类")  # 外键关联TypeInfo表

    # gadv = models.BooleanField(default=False) #商品是否推荐

    class Meta:
        verbose_name = "商品"
        verbose_name_plural = verbose_name

    def url(self):
        if self.gpic:
            return self.gpic.url
        else:
            return "url为空"

    def image_img(self):
        if self.gpic:
            href = self.gpic.url  # 点击后显示的放大图片
            src = self.gpic.thumbnail.url  # 页面显示的缩略图
            # 插入html代码
            image_html = '<a href="%s" target="_blank" title="传图片"><img alt="" src="%s"/>' % (href, src)
            return image_html
        else:
            return '上传图片'

    image_img.short_description = '图片'
    image_img.allow_tags = True  # 列表页显示图片

    def __str__(self):
        return self.gtitle

3、在app下 新建adminx.py,并设置商品分类TypeInfo 和商品表GoodsInfo的显示方式

import xadmin

from .models import TypeInfo, GoodsInfo


# Register your models here.

class TypeInfoAdmin(object):
    list_display = ['id', 'ttitle', 'timage_img']
    list_per_page = 10
    search_fields = ['ttitle']
    list_display_links = ['ttitle']


class GoodsInfoAdmin(object):
    list_per_page = 20
    style_fields = {'gcontent': "ueditor"}
    list_display = ['id', 'gtitle', 'gunit', 'gclick', 'gprice', 'image_img', 'gkucun', 'gjianjie']
    list_editable = ['gkucun', 'gjianjie', 'gclick', 'gprice']
    search_fields = ['gtitle', 'gjianjie']
    list_display_links = ['gtitle']


xadmin.site.register(TypeInfo, TypeInfoAdmin)
xadmin.site.register(GoodsInfo, GoodsInfoAdmin)

注意list_display 中的图片字段,不是定义的数据库的字段。

4、进行数据库迁移python manage.py makemigratons  和migrate

5、创建管理员 python  manage.py createsuperuser

6、启动项目python  manage.py runserver

7、登陆http://127.0.0.1:8000/xadmin

添加商品类别,然后在添加商品

 

这是xadmin的效果哦,是不是比admin的好看多了,而且大家注意哦,这里有皮肤切换和菜单收缩的,将在下篇中介绍到。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值