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

Python Django模型日期字段属性限制选项,python,django,django-models,datefield,Python,Django,Django Models,Datefield,背景:因此,我试图构建一个“账单”模型,其中包含属性名称(收款人名称)、金额(支付多少美元)和支付日期(何时支付账单) 我一直坚持的是:我很难将PayDate输入限制在1(每月第一天)到31(每月最后一天(取决于月份)) 这是我的模型代码: from django.db import models # Create your models here. class Bill(models.Model) : Name = models.CharField(max_length=200,

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

我一直坚持的是:我很难将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
s有一个
MinValueValidator
和一个
MaxValueValidator
。Validatiors可以这样使用:

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

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

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

来自django.db导入模型的

#在这里创建您的模型。
课程清单(模型.模型):
Name=models.CharField(最大长度=200,可编辑=True,空白=False)
金额=型号。小数字段(可编辑=真,空白=假,小数位数=2,最大位数=6)
PayDate=models.DateField(空白=False,自动\u now\u add=False)
定义(自我):
每个月的{self.PayDate}返回f“{self.Name}@${self.Amount}”

您尝试过什么,做过什么研究吗?我很难相信没有关于如何做到这一点的信息。为什么将日期存储为整数,而不使用正确的日期/时间类型?