【问题标题】:generate random value form other field value in Django从Django中的另一个字段值生成随机值
【发布时间】:2019-02-23 10:30:08
【问题描述】:

我有一个银行行的预订系统: 这是我的客户模型:

class Customer(models.Model):
customer_bank        = models.ForeignKey('Bank', on_delete=models.SET_NULL,related_name='coustmer_bank' ,null=True)
customer_branch      = models.ForeignKey('Branch', on_delete=models.SET_NULL,related_name='coustmer_branch',null=True)
booking_id           = models.CharField(max_length=120, blank= True,default=increment_booking_number)
identity_type        = models.ForeignKey('IdentityType',on_delete=models.SET_NULL,related_name='identity_type',null=True)
identity_or_passport_number   = models.CharField(max_length=20)
bank_account_no      = models.CharField(max_length=15)
Done                 = models.BooleanField(default=False)
booking_date_time    = models.DateTimeField(auto_now_add=True, auto_now=False)
Entrance_date_time   = models.DateTimeField(auto_now_add=False, auto_now=True)# Must be modified to work with Entrance Date and Time

def __str__(self):
    return self.booking_id

我需要为 booking_id 字段生成一个随机值,这取决于 bank_number 和 branch_number 以及客户 ID,那么我该怎么做呢?请帮忙

【问题讨论】:

    标签: django random django-models generate


    【解决方案1】:

    你可以覆盖模型的保存方法

    class Customer(models.Model):
    customer_bank        = models.ForeignKey('Bank', on_delete=models.SET_NULL,related_name='coustmer_bank' ,null=True)
    customer_branch      = models.ForeignKey('Branch', on_delete=models.SET_NULL,related_name='coustmer_branch',null=True)
    booking_id           = models.CharField(max_length=120, blank= True,default=increment_booking_number)
    identity_type        = models.ForeignKey('IdentityType',on_delete=models.SET_NULL,related_name='identity_type',null=True)
    identity_or_passport_number   = models.CharField(max_length=20)
    bank_account_no      = models.CharField(max_length=15)
    Done                 = models.BooleanField(default=False)
    booking_date_time    = models.DateTimeField(auto_now_add=True, auto_now=False)
    Entrance_date_time   = models.DateTimeField(auto_now_add=False, auto_now=True)# Must be modified to work with Entrance Date and Time
    
    def __str__(self):
        return self.booking_id
    
    def get_booking_id(self):
        bank_number = self.bank_number
        branch_number = self.branch_number
        id = # logic for calculating boking ID from bank_number, branch_number and other fields accessible from self.<field_name>
        return id
    
    def save(self, *args, **kwargs):
        self.booking_id = self.get_booking_id()
        super(Customer, self).save(*args, **kwargs)
    

    【讨论】:

    • @MhadiAhmed 为什么?
    猜你喜欢
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多