猿问

Django 模型 DateField 属性限制选择

背景:因此,我试图建立一个“账单”模型,其中包含名称(收款人姓名),金额(支付多少美元)和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属性的建议。


慕村9548890
浏览 125回答 2
2回答

慕的地8271018

IntegerFields 有 一个和一个 .验证器可以这样使用:MinValueValidatorMaxValueValidatorPayDate = models.IntegerField(         blank=False, editable=True, validators=[MinValueValidator(1),MaxValueValidator(31)])如果您希望最大值根据月份而变化,则必须在表单中执行此操作,因为模型上的验证是固定的

PIPIONE

您必须使用 用于存储付款日期。通过这样做,它将始终是一个有效的日期。通过添加 ,您还可以编辑该字段。DateFieldauto_now_add=Falsefrom 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"
随时随地看视频慕课网APP

相关分类

Python
我要回答