Django 模型 DateField 属性限制选择

Django model DateField attribute limit choices

背景: 所以我正在尝试构建一个 "Bill" 模型,该模型具有属性名称(收款人姓名)、金额(支付多少美元)和支付日期(什么时候付账)。

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

IntegerField 有一个 MinValueValidator 和一个 MaxValueValidator。验证器可以像这样使用:

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"