在上一篇把配置信息都弄妥了,现在可以进行大展手脚,开发实战了。
41.1 Model
设计产品类别、产品单位和产品信息的model如下。
from django.db import models
# 产品类别
class Category(models.Model):
name = models.CharField(max_length=128, verbose_name='类别名称', help_text='一个类别的名称应该唯一', unique=True, db_index=True)
create_time = models.DateTimeField(verbose_name='创建时间', auto_now=True)
class Meta:
verbose_name = "类别"
verbose_name_plural = "产品类别"
def __str__(self):
return self.name
def __unicode__(self):
return self.name
# 产品单位
class ProductUnit(models.Model):
name = models.CharField(max_length=128, verbose_name='单位名称', help_text='产品单位的名称应该唯一', unique=True, db_index=True)
create_time = models.DateTimeField(verbose_name='创建时间', auto_now=True)
class Meta:
verbose_name = "单位"
verbose_name_plural = "产品单位"
def __str__(self):
return self.name
def __unicode__(self):
return self.name
# 产品信息
class Product(models.Model):
name = models.CharField(max_length=128, verbose_name='名称', help_text='产品的名称应该唯一', unique=True, null=False,
blank=False, db_index=True)
brand = models.CharField(max_length=256, verbose_name='品牌', null=True, blank=True)
type = models.CharField(max_length=128, verbose_name='型号', null=True, blank=True)
spec = models.CharField(max_length=256, verbose_name='规格', blank=True, null=True)
price = models.DecimalField(verbose_name='价格', decimal_places=2, max_digits=9)
category = models.ForeignKey(Category, on_delete=models.SET_NULL, blank=False, null=True, verbose_name='类别',
db_index=True)
unit = models.ForeignKey(ProductUnit, on_delete=models.SET_NULL, blank=False, null=True, verbose_name='单位',
db_index=True)
status = models.BooleanField(verbose_name='状态', default=True)
create_time = models.DateTimeField(verbose_name='创建时间', auto_now=True)
update_time = models.DateTimeField(verbose_name='更新时间', auto_now=True)
class Meta:
verbose_name = "产品"
verbose_name_plural = "产品信息"
def __str__(self):
return self.name
def __unicode__(self):
return self.name
执行数据迁移真的很重要,唯有不厌其烦的再出给出。
python3 manage.py makemigrations product
python3 manage.py migrate product