day83-drf

基表的作用(继承)

class BaseModel(models.Model):
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    is_delete = models.BooleanField(verbose_name='是否删除', default=False)
    class Meta:     
        abstract = True                   # 有该属性的Model类不会完成数据库迁移产生一张表 


class Publish(BaseModel):
    name = models.CharField(verbose_name='出版社名', max_length=32)
    address = models.CharField(verbose_name='地址', max_length=64)
    phone = models.CharField(verbose_name='电话', max_length=32)

 

配置media静态文件(图片路径)

settings.py:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

models.py:

class Author(BaseModel):
    name = models.CharField(verbose_name='作者名', max_length=32)
    icon = models.FileField(upload_to='icon', default='icon/icon.jpg')      #传入路径和默认路径
    telephone = models.CharField(verbose_name='电话', max_length=32)

其他模型类中自定义显示字段:
@property
def author_detail_list(self):
    author_detail_arr = []
    for author in self.authors.all():
        author_dic = {}      
        author_dic['icon'] = settings.MEDIA_URL + str(author.icon)       # author.icon是对象类型,不能序列化
        author_detail_arr.append(author_dic)
    return author_detail_arr

模型表的外键字段处理方法

外键处理:

1.反向查询:related_name='xxx'

2.表关系(db_constraint + on_delete ): 
    db_constraint=False                         数据库断开关联 ,也就是操作数据库时不进行逻辑判断,但用orm逻辑判断操作数据库
    on_delete=models.CASCADE                    级联删除,多对多表不需要写,因为默认级联删除
    on_delete=models.SET_NULL, null=True        删除时,外键字段为为空
    on_delete=models.SET_DEFAULT, default=0     删除时,外键字段为0
    on_delete=models.DO_NOTHING                 删除时,外键字段不处理  
案例:
class
AuthorDetail(BaseModel): CHOICE_SEX = ( (0, ''), (1, '') ) age = models.IntegerField(verbose_name='年龄') sex = models.IntegerField(verbose_name='性别', choices=CHOICE_SEX, default=0) info = models.TextField(verbose_name='个人详情') author = models.OneToOneField(verbose_name='作者', to='Author', db_constraint=False, on_delete=models.CASCADE, related_name='detail')

猜你喜欢

转载自www.cnblogs.com/klw1/p/11361517.html
83
DRF
今日推荐