跟大妈学Django Part - 14 (Django入门续集14)

跟大妈学Django Part - 13 (Django入门续集13)

这个叫recordemo的App主要目的是记录心情。用CRUD来说的话,即是往数据库里添加资料。

其实要使这个app fully functioning,要写的代码还是很多的。起码对我这个新手来说,多。呵呵。

我们会通过Model, View, Form, Admin ,Template 和Urls.py 这几个方面讲讲。趁记忆犹新之时,尽快记录一下。

目录

models.py

代码预览

代码解析


models.py

/workspace/how-do-you-do/recordemo/models.py

代码预览

from django.db import models
from profiles.models import UserProfile


class AddFeeling(models.Model):

    FEELING_TYPES = [
        ('happy', 'Happy'),
        ('excited', 'Excited'),
        ('calm', 'Calm'),
        ('disppointed', 'Disppointed'),
        ('anxious', 'Anxious'),
        ('angry', 'Angry'),
    ]

    user_profile = models.ForeignKey(
        UserProfile,
        on_delete=models.SET_NULL,
        null=True, blank=True,
        related_name='user_feelings'
    )
    date = models.DateField(null=True)
    feelings = models.CharField(
        choices=FEELING_TYPES,
        null=True,
        max_length=15
    )
    details = models.TextField(null=True)

    def __str__(self):
        return self.feelings
    

代码解析

  • 这个model 需要import UserProfile 这个App,这个app 主要是为个人建立profile的一个app, 晚些会介绍到。在这里,除了import自己写的UserProfile,我觉得其实import Django 自带的User也是可以的。但是,由于我作业的时间比较紧,我并没有验证。

from profiles.models import UserProfile

  • AddFeeling 是这个model的名字,引用Django的models.Model

class AddFeeling(models.Model):

  • 接下来建一组心情的选择项,供用户可以选择,当然,也可以选择input的方式让用户自己输入,但是,如此一来,心情便是各式各样了。感觉有点乱?

FEELING_TYPES = [

        ('happy', 'Happy'),

        ('excited', 'Excited'),

        ('calm', 'Calm'),

        ('disppointed', 'Disppointed'),

        ('anxious', 'Anxious'),

        ('angry', 'Angry'),

]

  • 这个user_profile的主要目的是把心情归于个人。

  • 一个人可以有很多种情绪,所以,我们用到了ForeignKey,one to many(一对多)的关系。关联UserProfile Model。

  • on_delete : 同时删除相关的资料。例如用户张三删除了,那么与张三相关的资料也一并删除。

  • SET_NULL:删除完毕以后,该位置设为null,即允许写入新的数据,否者,Django会报错,显示该位置已有数据,无法写入。同理的还有null=True,设定该位置可以写入新的数据。

  • blank=True:主要是规定提交表格的时候,该位置能否为空。True即是可以,False即是要求填写,否者无法提交。

  • related_name:给主表和子表设定一个名字。这篇文章解释得很好。分享。

user_profile = models.ForeignKey(

        UserProfile,

        on_delete=models.SET_NULL,

        null=True, blank=True,

        related_name='user_feelings'

)

  • Date 使用的是DateField, 即输出的是日期的格式。设定该格子可以替代写入。

date = models.DateField(null=True)

  • feelings 使用的是CharField,选择是我们刚开始设定的一个feeling组。设定该格子可以替代写入。最长字数为15个。

feelings = models.CharField(

        choices=FEELING_TYPES,

        null=True,

        max_length=15

)

  • details 使用的是TextField,允许用户自行输入内容,且设定该格子可以替代写入。这个主要是为用户提供一个详细记载心情的区域的。

details = models.TextField(null=True)

def __str__(self):

        return self.feelings

如此一来,Model就算是写完了。接下来,我们就可以写form.py了。

相关资料 Model field reference

Moody Box Django 实战专栏直达

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrankyCat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值