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"
背景: 所以我正在尝试构建一个 "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"