Django模型-字段

Django模型-字段

Django模型-字段

Django的模型(Model)是对象关系映射(ORM)的核心部分,它允许开发者以Python类的方式定义数据库结构。每个模型类都代表数据库中的一张表,而类的属性则对应表中的字段。在Django中,字段类型非常丰富,用于满足不同的数据存储需求。

常用字段类型

  1. CharField:用于存储短字符串。需要指定max_length参数来限制字符串的最大长度。
class MyModel(models.Model):
    name = models.CharField(max_length=100)
  1. TextField:用于存储长文本,如文章、评论等。
class MyModel(models.Model):
    description = models.TextField()
  1. IntegerFieldFloatFieldDecimalField:分别用于存储整数、浮点数和小数。其中DecimalField需要指定max_digitsdecimal_places参数。
class MyModel(models.Model):
    age = models.IntegerField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
  1. DateFieldDateTimeField:用于存储日期和时间。
class MyModel(models.Model):
    publish_date = models.DateField()
    created_at = models.DateTimeField(auto_now_add=True)  # 创建时自动设置当前时间
  1. BooleanField:用于存储布尔值(True/False)。
class MyModel(models.Model):
    is_active = models.BooleanField(default=True)
  1. ForeignKeyManyToManyField:用于定义表之间的关系。ForeignKey表示一对多关系,ManyToManyField表示多对多关系。
class Category(models.Model):
    name = models.CharField(max_length=100)

class Article(models.Model):
    title = models.CharField(max_length=200)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)  # 一对多关系
    tags = models.ManyToManyField('Tag')  # 多对多关系
  1. EmailFieldURLField:特殊类型的CharField,用于存储电子邮件地址和URL,会进行一定的格式验证。
class MyModel(models.Model):
    email = models.EmailField()
    website = models.URLField()

字段参数

除了基本的字段类型外,Django的字段还支持许多参数,用于定制字段的行为。例如:

  • null:如果为True,Django将用NULL来在数据库中存储空值。默认值是False。
  • blank:如果为True,该字段允许不输入值。默认为False。需要注意的是,这与null不同。null是数据库范畴的,blank是表单验证范畴的。如果一个字段的blank=True,表单的验证将允许该字段是空值。如果字段的blank=False,该字段就是必填项。
  • default:字段的默认值。可以是一个值或者一个可调用对象。如果是一个可调用对象,每有新对象被创建它都会被调用。
  • unique:如果该值为True, 这个数据字段的值在整张表中必须是唯一的。

自定义字段

除了Django内置的字段类型外,你还可以根据需要创建自定义字段类型。这通常涉及到继承django.db.models.Field类并实现相关方法。

总结

Django的字段系统强大而灵活,能够满足大部分数据库存储需求。通过合理使用不同类型的字段和参数,你可以轻松地定义出符合业务逻辑的数据库模型。同时,Django的ORM还提供了丰富的查询和操作方法,使得数据操作变得简单而高效。




👨‍💻博主Python老吕说:如果您觉得本文有帮助,辛苦您🙏帮忙点赞、收藏、评论,您的举手之劳将对我提供了无限的写作动力!🤞

print('Hello,World!')  # 每日一码,使用Python跟世界说Hello,World!

🔥精品付费专栏:《Python全栈工程师》《跟老吕学MySQL》《Python游戏开发实战讲解》


🌞精品免费专栏:《Python全栈工程师·附录资料》《Pillow库·附录资料》《Pygame·附录资料》《Tkinter·附录资料》《Django·附录资料》《NumPy·附录资料》《Pandas·附录资料》《Matplotlib·附录资料》《Python爬虫·附录资料》


🌐前端免费专栏:《HTML》《CSS》《JavaScript》《Vue》


💻后端免费专栏:《C语言》《C++语言》《Java语言》《R语言》《Ruby语言》《PHP语言》《Go语言》《C#语言》《Swift语言》《跟老吕学Python编程·附录资料》


💾数据库免费专栏:《Oracle》《MYSQL》《SQL》《PostgreSQL》《MongoDB》


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Python老吕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值