【问题标题】:Automatically changing value in Django在 Django 中自动更改值
【发布时间】:2020-04-23 02:41:11
【问题描述】:

晚上好! 我正在使用 Django 创建一个应用程序来管理汽车租赁服务。我有一个模型 Car、User 和 Order,它有一个继承自 Car 的 ForeignKey。我创建了一个允许用户创建订单的表单。我想自动将汽车状态更改为“已出租”(在汽车模型中,它是具有 3 个选项的 CharField)。 有人可以帮我解决这个问题吗?

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】:

    当您创建 OrderForm 时,您还需要更新与该表单关联的汽车对象。

    因此,如果您使用服务来更新数据。那么您需要使用 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)
    

    【讨论】:

    • 非常感谢,但您能帮我解决一下这段代码吗?我已经尝试了很多选项,但它们都不起作用...如果您能够编写此更新,请。
    • @djangoprogrammer 编辑了答案。请检查这是否适合您。
    • 不要忘记使用form.is_valid()验证表单是否有效!
    • @NayanLathiya 非常感谢你!!!它工作得很好,我只需要添加 car = Car.objects.get - 没有对象它不起作用,但感谢您的无价帮助!
    • 很高兴帮助...更新了答案...错过了那里的对象词。 @djangoprogrammer 请接受它作为答案。
    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多