【问题标题】:want to save due_date in database which which override using def save(self, *args, **kwargs):想要将到期日期保存在使用 def save(self, *args, **kwargs) 覆盖的数据库中:
【发布时间】:2021-06-22 15:23:47
【问题描述】:

我想创建账单。我创建了两个字段due_date 和due_days。 due_date 是当前日期,due_days 是用户定义的天数。这将在当前日期之后添加。我生成下面的代码。它给了我正确的输出。但是由于到期日期没有保存在数据库中

due_days = models.IntegerField()    
def save(self, *args, **kwargs):
    if self.due_days:
       self.due_date = datetime.now()+timedelta(days=self.due_days)
       print ("due_date",self.due_date)
    super().save(*args, **kwargs)

我怎样才能将它保存在数据库中,它没有得到保存,也不能在字段中显示?

这是我的完整模型

from django.db import models
from djmoney.models.fields import MoneyField
from customer_details.models import CustomerDetailModel
from meter_details.models import MeterDetailModel
from datetime import datetime, timedelta


# Create your models here.
class BillDetailModel(models.Model):
    water_charges=MoneyField(max_digits=14, decimal_places=2)
    sewerage_charges=MoneyField(max_digits=14, decimal_places=2)
    meter_rent=MoneyField(max_digits=14, decimal_places=2)
    additional_charges=MoneyField(max_digits=14, decimal_places=2)
    surcharge=MoneyField(max_digits=14, decimal_places=2)
    current_bill_amount=MoneyField(max_digits=14, decimal_places=2)
    previous_outstanding=MoneyField(max_digits=14, decimal_places=2)
    credit_amount=MoneyField(max_digits=14, decimal_places=2)
    total_payable_amount=MoneyField(max_digits=14, decimal_places=2,null=True)

    ca_number = models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True,related_name="requests_created")
    name = models.ForeignKey(CustomerDetailModel,on_delete=models.SET_NULL,null=True,related_name="customer_name")
    bp_number = models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_bp_number")
    billing_address = models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True,related_name="customer_billing_address")
    supply_address=models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_supply_address")
    mobile_number = models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_mobile_number")
    telephone_number =  models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_telephone_number")
    security_deposit= models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_security_deposit")
    email =  models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_email")
    PAN= models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_PAN")
    GST= models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_GST")
    adhar_no= models.ForeignKey(CustomerDetailModel, on_delete=models.SET_NULL, null=True, related_name="customer_adhar_no")

    meter_serial_number= models.ForeignKey(MeterDetailModel, on_delete=models.SET_NULL, null=True, related_name="meter_detail_serial_number")
    meter_reading_date= models.ForeignKey(MeterDetailModel, on_delete=models.SET_NULL, null=True, related_name="meter_detail_reading_date")

    bill_date=  models.IntegerField()
 
    due_days = models.IntegerField()
    def save(self, *args, **kwargs):
        # due_date=
        if self.due_days:
            self.due_date = datetime.now()+timedelta(days=self.due_days)
            print ("due_date",self.due_date)
        super().save(*args, **kwargs)

    class Meta:
        db_table = 'bill_details'

【问题讨论】:

  • 有错误吗?你能展示整个模型吗?
  • 不,没有任何错误我在我的问题中发布了我的完整模型
  • due_days 不在模型中...
  • 再检查一下我改了
  • 现在due_date 不见了……

标签: datetime django-models super timedelta days


【解决方案1】:
due_days = models.IntegerField()
due_date = models.CharField(editable=False,max_length=100)

def save(self, *args, **kwargs):
    if self.due_days:
        self.due_date = datetime.now()+timedelta(days=self.due_days)
    super(BillDetailModel,self).save(*args, **kwargs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 2013-08-08
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多