Django初创shop应用

创建项目和应用


启动一个名为mysite的新项目,其中包含一个名为shop的应用程序。
打开shell并运行以下命令:
django-admin startproject mysite
cd myshop/
django-admin startapp shop

将shop应用程序添加到INSTALLED_APPS
编辑项目的settings.py文件:

INSTALLED_APPS = [
 # ...
 'shop.apps.ShopConfig',
]

创建应用模型


商店的目录将包括按不同类别分类的产品。
产品信息包括:

  • 类别(category):关联类别
  • 名称(name):最大长度200,开启索引
  • 描述(description):可选
  • 图像(image):可选
  • 价格(price):最大位数10,小数位数2
  • 可用性(available):默认可用
  • 自动生成创建和更新时间

编辑shop应用的models.py文件:

from django.db import models
from django.urls import reverse

class Category(models.Model):
    name = models.CharField(max_length=200,db_index=True)
    slug = models.SlugField(max_length=200,unique=True)

    class Meta:
        ordering = ('name',)
        verbose_name = 'category'
        verbose_name_plural = 'categories'
    
    def __str__(self):
        return self.name
    
    def get_absolute_url(self):
        return reverse('shop:product_list_by_category',args=[self.slug])
    
class Product(models.Model):
    category = models.ForeignKey(Category,related_name='products',on_delete=models.CASCADE)
    name = models.CharField(max_length=200, db_index=True)
    slug = models.SlugField(max_length=200, db_index=True)
    image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True)
    description = models.TextField(blank=True)
    price = models.DecimalField(max_digits=10,decimal_places=2)
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ('name',)
        index_together = (('id','slug'),)
    
    def __str__(self):
        return self.name
    
    def get_absolute_url(self):
        return reverse('shop:product_detail',args=[self.id,self.slug])
  • ForeignKey是一对多关系,一个类别对应多个产品。
  • slug讲为这个产品构建URL。
  • decimal.Decimal是固定精度数字,包含两个参数:max_digits设置最大位数(包含小数位),decimal_places设置小数位数。

建议使用DecimalField来存储货币金额。可以避免浮点四舍五入问题。

在Meta中设置的参数含义:

  • ordering:排序。
  • verbose_name:在admin管理界面中显示中文,单数形式显示。
  • verbose_name_plural:复数形式显示&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值