美文网首页django-game
(一)django-game:model 设计

(一)django-game:model 设计

作者: 你常不走的路 | 来源:发表于2018-01-19 14:23 被阅读70次
    看了看 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集成

    相关文章

      网友评论

        本文标题:(一)django-game:model 设计

        本文链接:https://www.haomeiwen.com/subject/fjpooxtx.html