yp_library.models 源代码
from django.db import models
from django.contrib import admin
from generic.models import User
__all__ = [
"User",
"Reader",
"Book",
"LendRecord",
]
[文档]
class Reader(models.Model):
class Meta:
verbose_name = "读者"
verbose_name_plural = verbose_name
id = models.AutoField("编号", primary_key=True)
student_id = models.CharField("学号", max_length=30, blank=True, null=True)
def __str__(self):
return self.student_id
[文档]
class Book(models.Model):
class Meta:
verbose_name = "书"
verbose_name_plural = verbose_name
id = models.IntegerField("书籍编号", primary_key=True)
identity_code = models.CharField("索书号",
max_length=254,
blank=True,
null=True)
title = models.CharField("书名", max_length=500, blank=True, null=True)
author = models.CharField("作者", max_length=254, blank=True, null=True)
publisher = models.CharField("出版商", max_length=254, blank=True, null=True)
returned = models.BooleanField("是否已还", default=True)
def __str__(self):
return str(self.title)
[文档]
class LendRecord(models.Model):
class Meta:
verbose_name = "借阅记录"
verbose_name_plural = verbose_name
ordering = ["-lend_time"]
id = models.IntegerField("条目编号", primary_key=True)
reader_id = models.ForeignKey(Reader,
on_delete=models.CASCADE,
verbose_name="读者编号")
book_id = models.ForeignKey(Book,
on_delete=models.SET_NULL,
verbose_name="书籍编号",
blank=True,
null=True)
lend_time = models.DateTimeField("借出时间")
due_time = models.DateTimeField("还书截止时间")
return_time = models.DateTimeField("还书时间", blank=True, null=True)
returned = models.BooleanField("是否已还", default=False)
[文档]
class Status(models.IntegerChoices):
NORMAL = (0, "正常")
OVERTIME = (1, "超时扣分")
APPEALING = (2, "申诉中")
ACCEPTED = (3, "申诉通过")
REJECTED = (4, "申诉失败")
status = models.SmallIntegerField("借阅记录状态",
choices=Status.choices,
default=Status.NORMAL)
[文档]
def get_admin_url(self) -> str:
'''获取后台搜索的url'''
return f'/admin/yp_library/lendrecord/?q={self.id}'
[文档]
@admin.display(description="读者学号")
def reader_stu_id(self):
return self.reader_id.student_id
[文档]
@admin.display(description="书籍名称")
def book_name(self):
if self.book_id:
return self.book_id.title
else:
return "未知"