博客系統表設計


1、表繼承

因為當你makemigrations和migrate的時候會自動生成auth_user表 所以創建用戶表的時候可以用人家自定義的auth_user表, 如果你還想在表里增加一些字段,可以利用繼承 from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): pass 要是這樣用繼承的話需要在settings中配置一下: AUTH_USER_MODEL ="應用名稱.UserInfo"

2、頭像:可用FileField或者ImageField

avatar = models.FileField(verbose_name="頭像",upload_to="avatar",default="/avatar/default.png") 
upload_to:上傳到的具體位置
default:默認位置

3、創建時間

auto_now :無論是你添加還是修改對象,時間為你添加或者修改的時間 auto_now_add:是你當前創建的時間,當你更新對象時時間不會有變法 create_time = models.DateTimeField(verbose_name="創建時間",auto_now_add=True)

4、自己創建第三張表,並設置字段。。以下是具體操作

這樣做的好處是:方便以后操作,可以在第三張關聯表中增加或刪除字段

class Tag(models.Model):
    pass
class Article(models.Model):
    tags = models.ManyToManyField(to="Tag",through="article2tag",through_fields=('article', 'tag'))  #through_fields=('article', 'tag')相當於給這兩個字段關聯
class Article2tag(models.Model):
    article = models.ForeignKey(verbose_name="文章",to="Article")
    tag = models.ForeignKey(verbose_name="標簽",to="Tag")
    class Meta:
        '''聯合唯一'''
        unique_together = [
            ("article","tag")
        ]

5、choices屬性    

type_choices = [ (1,"編程語言"), (2,"軟件設計"), (3,"前端系列"), (4,"數據庫"), (5,"操作系統") ] artcle_type_id = models.IntegerField(choices=type_choices,default=None)

6、自關聯的兩種表示方式,假設為null的時候是文章贊

方式一
farther_comment = models.ForeignKey(to="Comment",verbose_name="父級評論",null=True,blank=True) 方式二
farther_comment
= models.ForeignKey("self",verbose_name="父級評論",null=True,blank=True)

7、聯合唯一的表示方式

class Meta: '''聯合唯一''' unique_together = ("user_id","comment_id",) verbose_name_plural = "評論點贊表"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM