利用drf对books的增删改查,分页器和ip控制访问次数

books系列表接口

#1、book表
	-一对一关系,其实是ForeignKey,unique
    -on_delete:models.DO_NOTHING(删除了一个字段,另一个字段什么都不干,例如书和出版社表,出版社没了,书还有),models.CASCADE(级联删除,例如作者和作者详情表,作者没了,作者详情表也没有意义,一对一关系)
    -字段建索引,字段唯一
    -联合索引,联合唯一
    -日期类型  auth_now(更新数据时候日期更新,例如last_update_time字段) 和auto_now_add(一旦建立就不变,例如create_time字段)
    -基表 abstract = True  #abstract = True 写这个就不会生成BaseModel表 
    from django.db import models

# Create your models here.

class BaseModel(models.Model):
    is_delete = models.BooleanField(default=False)
    create_time = models.DateTimeField(auto_now_add=True)
    last_update_time = models.DateTimeField(auto_now=True)
    class Meta:
        abstract = True  #abstract = True 写这个就不会生成BaseModel表
class Book(BaseModel):
    #id,name ,price,is_delete,create_time,last_update_time
    # id = models.AutoField(primary_key=True)
    #verbose_name  admin中显示中文
    name = models.CharField(max_length=32,verbose_name='书名')
    price = models.DecimalField(max_digits=5,decimal_places=2,verbose_name='书价')
    #一对多关系,关联字段建在多的一方
    #to_field:默认不写,关联到Publish的主键
    #db_constraint=False:逻辑上的关联,实质上没有外键联系,增删不会受外键影响,但是orm查询不影响
    publish = models.ForeignKey(to='Publish',on_delete=models.DO_NOTHING,db_constraint=False)

    #多对多,关联字段写在查询次数多的一方
    #什么时候用自动,什么时候用手动?第三张表没有关联字段,用自动,第三张表有扩展字段,需要手动写
    #不能写on_delete(因为这是第三张表)
    authors = models.ManyToManyField(to='Author',db_constraint=False,verbose_name='作者')

    def __str__(self):
        return self.name
    @property
    def publish_name(self):
        return self.publish.name

    def author_list(self):
        author_list = self.authors.all()
        # l1 = []
        # for author in author_list:
        #     l1.append({'name':author.name,'sex':author.get_sex_display()})
        # return l1

        #列表推导式
        return [
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值