我正在 Django 2.1 中构建旅行预订应用程序,但在更新汽车中的可用座位以进行旅行时遇到了一些问题。您的帮助将不胜感激)
在下面,我有我的第一个模型,我试图在第一次创建模型时使用 available_seats
初始化 seats
。首先,我尝试了以下方法
class Trip(models.Model):
origin = models.CharField(max_length=120)
destination = models.CharField(max_length=120)
time_date = models.DateTimeField(auto_now=True)
arrival_time = models.DateTimeField()
trip_cost = models.IntegerField()
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
seats = models.IntegerField()
available_seats = models.IntegerField(default=seats)
是的,此方法不起作用,因为无法将变量分配给尚未定义的变量。因此,我提出了一些解决方案,我需要重写模型的 save()
方法或使用信号来完成我想要的。所以,我做到了:
class Trip(models.Model):
origin = models.CharField(max_length=120)
destination = models.CharField(max_length=120)
time_date = models.DateTimeField(auto_now=True)
arrival_time = models.DateTimeField()
trip_cost = models.IntegerField()
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
seats = models.IntegerField()
available_seats = models.IntegerField()
#rewriting save() method
# def save(self, created=False, *args, **kwargs):
# if created:
# self.available_seats = self.seats
# super().save(*args, **kwargs)
#using signals
@receiver(pre_save, sender=Trip)
def default_available_seats(sender, instance=Trip, created, **kwargs):
if created:
instance.available_seats = instance.seats
这两种方式将设置我的 Trip.available_seats = seats
,但问题是现在我的 available_seats
始终相关并依赖于我的 seats
。我无法单独更新值 available_seats
,每当我更新 seats
可用座位会自动更改,但我不想要它。我希望 available_seats
在创建旅行模型时具有 seats
值。因为一旦有人预订了座位,available_seats 就会发生变化。
我怎样才能实现我想要做的事情? 寻求您的操作帮助) 提前致谢!