Django模型日期字段属性限制选项

2024-06-28 19:00:19 发布

您现在位置:Python中文网/ 问答频道 /正文

背景:因此,我试图构建一个“账单”模型,其中包含属性名称(收款人名称)、金额(支付多少美元)和支付日期(何时支付账单)

我一直坚持的是:我很难将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属性的建议


Tags: name模型self名称falsetrue属性models
2条回答

IntegerField有一个MinValueValidator和一个MaxValueValidator。Validatiors可以这样使用:

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

如果希望最大值随月份而变化,则必须在表单中进行更改,因为模型验证是固定的

您必须使用DateField来存储付款日期。这样,它将始终是一个有效日期。通过添加auto_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"

相关问题 更多 >