1. 程式人生 > >用Django寫部落格(一)資料建模

用Django寫部落格(一)資料建模

轉載註明出處

http://blog.csdn.net/xugangjava

有些地方不對的話歡迎大家指正!
開發工具用的是Aptana Studio2.0具體如何安裝並新建一個django專案和
如何配置資料庫就不介紹了
完成後我的路徑:
目錄結構


1.首先是資料庫建模
這裡為了方便使用的是Sqllit3資料庫,django可以通過modles逆向到資料庫

先寫models.py'''

#使用者列表,這個我還沒用到
class Users(models.Model):
    #相當於varchar字元型別
    uname=models.CharField(verbose_name='使用者名稱',max_length=25)
    pwd=models.CharField(verbose_name='密碼',max_length=12)
    sex=models.CharField(verbose_name='性別',choices=(("M","男"),("F","女")),max_length=1)
    email=models.CharField(max_length=25)   
    last_login_ip=models.IPAddressField(verbose_name='最後登入IP')
    last_login_date=models.DateTimeField(verbose_name='最後登入日期')
    #過載meta模組,修改Admin後臺中顯示的名稱
    class Meta:
        verbose_name = '使用者'
        verbose_name_plural = '使用者列表'
    def __unicode__(self):
        return self.uname

#文章型別列表   
class EssayType(models.Model):
    id=models.AutoField('id',primary_key=True)
    #相當於varchar字元型別,最大長度25
    tname=models.CharField(
    verbose_name='文章類名',max_length=25)
    baseType=models.ForeignKey('self','id',
    null=True, blank=True,
    verbose_name='所屬類別')
    #重寫Meta模組,修改在管理後臺中的顯示名稱
    class Meta:
        verbose_name = '文章型別'
        verbose_name_plural = '文章型別列表'
        #按名稱排序
        ordering = ['tname']
    def __unicode__(self):
        return self.tname
#文章列表,verbose_name就是等下再後臺中欄位的名稱      
class Essay(models.Model):
    eType=models.ForeignKey(EssayType,
    verbose_name='所屬類別')
    title=models.CharField(max_length=25,
    verbose_name='文章標題')
    content=models.TextField(max_length=2000,
    verbose_name='文章內容')
    abstract=models.TextField(max_length=150,
    verbose_name='文章摘要')
    pub_date=models.DateTimeField(
    verbose_name='發表日期')
    view_count=models.IntegerField(
    verbose_name='瀏覽次數',default=0)
    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章列表'
        #按時間排序
        ordering = ['-pub_date']
    def __unicode__(self):
        return self.title 
#回覆列表   
class Comment(models.Model):
    uname=models.CharField(max_length=25,
    verbose_name='回覆者名稱')
    email=models.EmailField(max_length=25,
    verbose_name='回覆者Email')
    content=models.TextField(max_length=200,
    verbose_name='回覆內容')
    pub_date=models.DateTimeField(
    verbose_name='回覆日期')
    essay=models.ForeignKey(Essay,
    related_name='essay_comment')
    class Meta:
        verbose_name = '回覆'
        verbose_name_plural = '回覆資訊列表'
    def __unicode__(self):
        return self.uname
#留言資訊表   
class LevelMsg(models.Model):
    uname=models.CharField(max_length=25,
    verbose_name='留言者名稱')
    content=models.TextField(max_length=200,
    verbose_name='留言內容')
    email=models.EmailField(max_length=25,
    verbose_name='留言者Email')
    class Meta:
        verbose_name = '留言板'
        verbose_name_plural = '留言資訊列表'
    def __unicode__(self):
        return self.uname
#部落格存檔記錄
class Archive(models.Model):
    essay=models.
    ForeignKey(Essay,related_name='archive_essay')
    pub_date=models.
    DateTimeField(verbose_name='存檔日期')
    class Meta:
        verbose_name = '存檔資訊'
        verbose_name_plural = '存檔資訊列表'
    def __unicode__(self):
        return str(self.pub_date)+"("+self.essay.title+")"


'''python manage.py syncdb同步資料庫,Sqlite資料庫中會自動的建立一些表
Python manage.py sqlall core[你的app名稱,我的叫core

建立好資料庫,核心功能就完成了一大半了,在下一篇中介紹 如何製作管理後臺

原始碼下載地址(程式碼是去年的某個版本,可能有些地方和文中有些不同)