1. 程式人生 > >項目-博客園

項目-博客園

信息 del djang unique model key through oge parent

Login部分

這裏使用了抽象類,抽象類是一個自帶的數據庫,但是有一些信息不完善,可以補充需要的信息制作更完善的數據庫和ORM。

誰使用更抽象類,就要繼承AbstractUser。抽象類有很多好處,django內部封裝了很多方法可以直接操作數據,很方便。

from django.db import models

# Create your models here.
from django.contrib.auth.models import AbstractUser


class UserInfo(AbstractUser):
    """
    用戶信息
    """
    nid 
= models.AutoField(primary_key=True) telephone = models.CharField(max_length=11, null=True, unique=True) avatar = models.FileField(upload_to=avatars/, default="/avatars/default.png") create_time = models.DateTimeField(verbose_name=創建時間, auto_now_add=True) blog = models.OneToOneField(to=
Blog, to_field=nid, null=True) def __str__(self): return self.username class Blog(models.Model): """ 博客信息 """ nid = models.AutoField(primary_key=True) title = models.CharField(verbose_name=個人博客標題, max_length=64) site = models.CharField(verbose_name=個人博客後綴
, max_length=32, unique=True) theme = models.CharField(verbose_name=博客主題, max_length=32) def __str__(self): return self.title class Category(models.Model): """ 博主個人文章分類表 """ nid = models.AutoField(primary_key=True) title = models.CharField(verbose_name=分類標題, max_length=32) blog = models.ForeignKey(verbose_name=所屬博客, to=Blog, to_field=nid) def __str__(self): return self.title class Tag(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField(verbose_name=標簽名稱, max_length=32) blog = models.ForeignKey(verbose_name=所屬博客, to=Blog, to_field=nid) def __str__(self): return self.title class Article(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField(max_length=50, verbose_name=文章標題) desc = models.CharField(max_length=255, verbose_name=文章描述) create_time = models.DateTimeField(verbose_name=創建時間) comment_count = models.IntegerField(default=0) up_count = models.IntegerField(default=0) down_count = models.IntegerField(default=0) category = models.ForeignKey(to=Category, to_field=nid, null=True) user = models.ForeignKey(verbose_name=作者, to=UserInfo, to_field=nid) tags = models.ManyToManyField( to="Tag", through=Article2Tag, through_fields=(article, tag), ) def __str__(self): return self.title class ArticleDetail(models.Model): """ 文章詳細表 """ nid = models.AutoField(primary_key=True) content = models.TextField() article = models.OneToOneField(to=Article, to_field=nid) class Article2Tag(models.Model): nid = models.AutoField(primary_key=True) article = models.ForeignKey(verbose_name=文章, to="Article", to_field=nid) tag = models.ForeignKey(verbose_name=標簽, to="Tag", to_field=nid) class Meta: unique_together = [ (article, tag), ] def __str__(self): v = self.article.title + "--" + self.tag.title return v class ArticleUpDown(models.Model): """ 點贊表 """ nid = models.AutoField(primary_key=True) user = models.ForeignKey(UserInfo, null=True) article = models.ForeignKey("Article", null=True) is_up = models.BooleanField(default=True) class Meta: unique_together = [ (article, user), ] class Comment(models.Model): """ 評論表 """ nid = models.AutoField(primary_key=True) article = models.ForeignKey(verbose_name=評論文章, to=Article, to_field=nid) user = models.ForeignKey(verbose_name=評論者, to=UserInfo, to_field=nid) content = models.CharField(verbose_name=評論內容, max_length=255) create_time = models.DateTimeField(verbose_name=創建時間, auto_now_add=True) parent_comment = models.ForeignKey(self, null=True) def __str__(self): return self.content

項目-博客園