为了账号安全,请及时绑定邮箱和手机立即绑定

Django 模型 DateField 属性限制选择

Django 模型 DateField 属性限制选择

慕村9548890 2022-08-25 13:38:34
背景:因此,我试图建立一个“账单”模型,其中包含名称(收款人姓名),金额(支付多少美元)和PayDate(何时支付账单)的属性。我坚持的:我很难尝试将 PayDate 输入从 1(每月的第一天)限制为 31(每月的最后一天(取决于月份))这是我的模型代码:from django.db import models# Create your models here.class Bill(models.Model) :    Name = models.CharField(max_length=200, editable=True, blank=False)    Amount = models.DecimalField(editable=True, blank=False, decimal_places=2, max_digits=6)    PayDate = models.IntegerField(        blank=False, editable=True)def __str__(self):    return f"{self.Name} @ ${self.Amount} every {self.PayDate} of the month"我很想得到你关于如何设置PayDate属性的建议。
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

IntegerFields 有 一个和一个 .验证器可以这样使用:MinValueValidatorMaxValueValidator

PayDate = models.IntegerField(
        blank=False, editable=True, validators=[MinValueValidator(1),MaxValueValidator(31)])

如果您希望最大值根据月份而变化,则必须在表单中执行此操作,因为模型上的验证是固定的


查看完整回答
反对 回复 2022-08-25
?
PIPIONE

TA贡献1829条经验 获得超9个赞

您必须使用 用于存储付款日期。通过这样做,它将始终是一个有效的日期。通过添加 ,您还可以编辑该字段。DateFieldauto_now_add=False


from django.db import models


# Create your models here.



class Bill(models.Model) :

    Name = models.CharField(max_length=200, editable=True, blank=False)

    Amount = models.DecimalField(editable=True, blank=False, decimal_places=2, max_digits=6)

    PayDate = models.DateField(blank=False, auto_now_add=False)


def __str__(self):

    return f"{self.Name} @ ${self.Amount} every {self.PayDate} of the month"


查看完整回答
反对 回复 2022-08-25
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信