(一)django-game:model 設計

weixin_34107955發表於2018-01-19
看了看 4399網站 首頁 就是 head 一些廣告 和一些 登入 搜尋 這個先不管
然後就是寫下面的 導航 分類 ,然後 下面還有更加細緻的分類 每個一級類別 下面還有一個二級類別,
然後 就是遊戲資訊
然後進入 遊戲詳情頁 看看 就是 開始遊戲 一些遊戲的資訊 下面有一個富文字 介紹如何遊戲

旁邊的推薦 熱門 相似 之類

按照上面 我們創造 三個 app 一個是 user 一個是 game 另一個 user_operation

首先 我們來寫 user 的 model:

先簡單的寫一些 後期 如果 還有更詳細的內容 在加上來

from django.db import models
from datetime import datetime
from django.contrib.auth.models import AbstractUser

# Create your models here.

class UserProfile(AbstractUser):
    name = models.CharField(max_length=10,verbose_name="暱稱",default='')
    birday = models.DateField(verbose_name="生日",null=True,blank=True)
    gender = models.CharField(max_length=6,choices=(('male','男'),('female','女')),default='female')
    mobile = models.CharField(max_length=11,null=True,blank=True,verbose_name='手機號')
    image = models.ImageField(upload_to="image/%Y/%m",default='',max_length=100)


    class Meta:
        verbose_name = "使用者資訊"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username

# email驗證
class EmailVerifyRecord(models.Model):
    code = models.CharField(max_length=20, verbose_name=u"驗證碼")
    email = models.EmailField(max_length=50, verbose_name=u"郵箱")
    send_type = models.CharField(verbose_name="驗證碼型別", max_length=30,
                                 choices=(("register", '註冊'), ("forget", "找回密碼"), ('update_email', '修改郵箱')))
    send_time = models.DateTimeField(verbose_name="傳送時間", default=datetime.now)

    class Meta:
        verbose_name = "郵箱"
        verbose_name_plural = verbose_name

    def __str__(self):
        return "{0}({1})".format(self.code, self.email)
然後是 game 的model:

我這裡 以類別 為一級類別 標籤為二級類別
遊戲可以有一個 一級類別 有很多個 二級類別

遊戲和 類別 是多對一關係
遊戲和標籤 是多對多關係
標籤和類別 是 多對一關係
from django.db import models
from datetime import datetime


# Create your models here.

class Category(models.Model):
    name = models.CharField(max_length=10, verbose_name="類別")
    add_time = models.DateTimeField(default=datetime.now, verbose_name='新增時間')

    class Meta:
        verbose_name = '類別管理'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class Tags(models.Model):
    name = models.CharField(max_length=10, verbose_name="標籤")
    category = models.ForeignKey(Category, verbose_name="類別")
    add_time = models.DateTimeField(default=datetime.now, verbose_name='新增時間')

    class Meta:
        verbose_name = '標籤管理'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class Games(models.Model):
    name = models.CharField(max_length=10, verbose_name="遊戲名")
    category = models.ForeignKey(Category, verbose_name='類別')
    tags = models.ManyToManyField(Tags, verbose_name="標籤")
    file = models.FileField(upload_to="game/%Y/%m", verbose_name="遊戲")
    fav_nums = models.IntegerField(default=0, verbose_name='收藏數')
    detail = models.TextField()
    is_hot = models.BooleanField(default=False)
    is_new = models.BooleanField(default=False)

    add_time = models.DateTimeField(default=datetime.now, verbose_name='新增時間')

    class Meta:
        verbose_name = '遊戲資訊'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name
然後 就是user_opreation 的model

想了一下 似乎 就只有 使用者收藏 和 使用者玩過 這兩個操作 以後 還可以加上評論 或者 其他的

from game.models import Games

User = get_user_model()


class UserFav(models.Model):
    user = models.ForeignKey(User, verbose_name="使用者名稱")
    game = models.ForeignKey(Games, verbose_name="遊戲")
    add_time = models.DateTimeField(default=datetime.now, verbose_name='新增時間')

    class Meta:
        verbose_name = '使用者收藏'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.user.username


class UserPlay(models.Model):
    user = models.ForeignKey(User, verbose_name="使用者名稱")
    game = models.ForeignKey(Games, verbose_name="遊戲")
    add_time = models.DateTimeField(default=datetime.now, verbose_name='新增時間')

    class Meta:
        verbose_name = '使用者玩過'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.user.username

到這裡 基本 model就 可以了 然後 下一篇 講一講 xadmin整合

相關文章