class Person(models.Model): first=models.CharField(max_length=100) last=models.CharField(max_length=100) middle=models.CharField(max_length=100,blank=True) class Meta: #the proper way to oder people,assuming a Last,First M. style of display ordering=['last','first','middle'] #Here we encode the fact that we can't have a person with a 100% #identical name. Of course,in real life,we could,but we'll pretend #this is an ideal worl unique_together=['first','last','middle'] 解释一下这个类嵌套类是是吗意思
时间: 2024-04-29 16:20:33 浏览: 12
这段代码定义了一个 Django Model 类 `Person`,并嵌套了一个内部类 `Meta`。`Meta` 类是一个特殊的类,它允许我们在 Model 类中定义一些元数据,比如它的排序方式和唯一性约束。
在这个例子中,`Meta` 类中的 `ordering` 属性定义了按照姓、名、中间名的顺序排序,用于在查询 Person 对象时按照这个顺序返回结果。而 `unique_together` 属性则定义了不能有重复的姓、名、中间名的组合,相当于在数据库层面上对这三个字段进行了唯一性约束。这样可以确保我们不会在数据库中出现重名的人。
相关问题
class ItemType(models.Model): name = models.CharField(max_length=100, verbose_name='商品类型名称')
这段代码定义了一个名为 ItemType 的 Django 模型,它表示了一个商品类型。这个模型继承自 Django 的 models.Model 类,因此拥有了模型类的基本功能和属性。
在这个模型中,定义了一个名为 name 的 CharField 字段,它表示了商品类型的名称,最大长度为 100。verbose_name 参数用于为这个字段设置人类可读的名称,也就是在 Django 的管理界面中显示的名称。
通过定义这个模型,我们可以在 Django 中创建商品类型相关的数据表,并进行数据的增删改查等操作。
class Tbookinfo(models.Model): """教材信息""" bnumber = models.IntegerField(verbose_name='教材编号',max_length=32,primary_key=True) bname = models.CharField(verbose_name='书名',max_length=32) price = models.CharField(verbose_name='价格', max_length=32) quantity = models.CharField(verbose_name='数量', max_length=32) class Meta: db_table = 'tbookinfo'class Lmanagement(models.Model): """入库管理""" bnumber = models.IntegerField(verbose_name='教材编号',max_length=32,default='') bname = models.CharField(verbose_name='书名',max_length=32,default='') quantity = models.CharField(verbose_name='数量', max_length=32,default='') loquantity = models.CharField(verbose_name='入库数量', max_length=32,default='') warehousingtime = models.DateTimeField(verbose_name='入库时间', max_length=32,auto_now_add=True) class Meta: db_table = 'lmanagement' class Omanagement(models.Model): """出库管理""" bnumber = models.IntegerField(verbose_name='教材编号',max_length=32,default='') bname = models.CharField(verbose_name='书名',max_length=32,default='') quantity = models.CharField(verbose_name='数量', max_length=32,default='') loquantity = models.CharField(verbose_name='出库数量', max_length=32,default='') outboundtime = models.DateTimeField(verbose_name='出库时间', max_length=32,auto_now_add=True) class Meta: db_table = 'omanagement'当入库数量或出库数量改变时,Tbookinfo的quantity 也要跟着改变,怎么写出代码
可以在Lmanagement和Omanagement的save()方法中,通过更新Tbookinfo的quantity来实现。
代码如下:
class Tbookinfo(models.Model):
"""教材信息"""
bnumber = models.IntegerField(verbose_name='教材编号',max_length=32,primary_key=True)
bname = models.CharField(verbose_name='书名',max_length=32)
price = models.CharField(verbose_name='价格', max_length=32)
quantity = models.CharField(verbose_name='数量', max_length=32)
class Meta:
db_table = 'tbookinfo'
class Lmanagement(models.Model):
"""入库管理"""
bnumber = models.IntegerField(verbose_name='教材编号',max_length=32,default='')
bname = models.CharField(verbose_name='书名',max_length=32,default='')
quantity = models.CharField(verbose_name='数量', max_length=32,default='')
loquantity = models.CharField(verbose_name='入库数量', max_length=32,default='')
warehousingtime = models.DateTimeField(verbose_name='入库时间', max_length=32,auto_now_add=True)
class Meta:
db_table = 'lmanagement'
def save(self, *args, **kwargs):
tbookinfo = Tbookinfo.objects.get(bnumber=self.bnumber)
tbookinfo.quantity = str(int(tbookinfo.quantity) + int(self.loquantity))
tbookinfo.save()
super(Lmanagement, self).save(*args, **kwargs)
class Omanagement(models.Model):
"""出库管理"""
bnumber = models.IntegerField(verbose_name='教材编号',max_length=32,default='')
bname = models.CharField(verbose_name='书名',max_length=32,default='')
quantity = models.CharField(verbose_name='数量', max_length=32,default='')
loquantity = models.CharField(verbose_name='出库数量', max_length=32,default='')
outboundtime = models.DateTimeField(verbose_name='出库时间', max_length=32,auto_now_add=True)
class Meta:
db_table = 'omanagement'
def save(self, *args, **kwargs):
tbookinfo = Tbookinfo.objects.get(bnumber=self.bnumber)
tbookinfo.quantity = str(int(tbookinfo.quantity) - int(self.loquantity))
tbookinfo.save()
super(Omanagement, self).save(*args, **kwargs)