在Django中自动改变数值

问题描述 投票:0回答:1

晚上好!我正在使用Django创建一个应用程序来管理汽车租赁服务。我有一个模型Car、User和Order,其中有一个从Car继承的ForeignKey。我创建了一个表单,用于允许用户创建订单。我想自动改变汽车状态为 "Rented"(在Car模型中,它是CharField,有3个选择).有人能帮我解决这个问题吗?

class Car(models.Model):
    STATUS = (
    ('Dostępny', 'Dostępny'),
    ('Wypożyczony', 'Wypożyczony'),
    ('Inne', 'Inne'),
    )
    marka = models.CharField(max_length=100)
    model = models.CharField(max_length=100)
    production_year = models.CharField(max_length=100)
    color = models.CharField(max_length=100)
    id_plate = models.CharField(max_length=100)
    status = models.CharField(max_length=100, choices=STATUS)
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.marka + ' ' + self.model + ' (' + self.color + ')'

class Order(models.Model):
    client = models.ForeignKey(Klient, on_delete=models.CASCADE)
    car = models.ForeignKey(Car, on_delete=models.CASCADE)
    date_ordered = models.DateField(default=datetime.now)
    date_return = models.DateField()
    date_added = models.DateTimeField(auto_now_add=True)

这是我的表单。

class OrderForm(ModelForm):
    class Meta:
        model = Order
        fields = ['client', 'car', 'date_ordered', 'date_return']

那是views.py:

def createOrder(request):
   form = OrderForm()
   if request.method == 'POST':
     form = OrderForm(request.POST)
     if form.is_valid():
        form.save()
        return redirect('home')
   context = {'form': form}
   return render(request, 'namiejscu/order_form.html', context)
python django web
1个回答
0
投票

当你创建一个OrderForm时,你也需要更新与该表单相关联的car对象。

因此,如果你使用服务来更新数据,那么你需要从post请求中调用更新查询与护理Id,并设置它的状态。

否则你可以在创建表单后和保存表单前添加该逻辑。

示例代码。

def createOrder(request):
form = OrderForm()
if request.method == 'POST':
    form = OrderForm(request.POST)
    car = Car.objects.get(pk=request.POST['car'])
    car.status = "Here put the status"
    car.save()
    if form.is_valid():
        form.save()
        return redirect('home')
    context = {'form': form}
return render(request, 'namiejscu/order_form.html', context)
热门问题
推荐问题
最新问题