Автоматически изменяемое значение в Django - PullRequest
0 голосов
/ 22 апреля 2020

Добрый вечер! Я создаю приложение, используя Django для управления услугой проката автомобилей. У меня есть модель Car, User и Order, у которой есть ForeignKey, наследуемый от 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)

1 Ответ

0 голосов
/ 22 апреля 2020

Когда вы создаете OrderForm, вам также необходимо обновить автомобильный объект, связанный с этой формой.

Так что, если вы используете службы для обновления данных. затем вам нужно вызвать запрос на обновление с идентификатором обслуживания из почтового запроса и установить его статус.

В противном случае вы можете добавить этот лог c после создания формы и перед ее сохранением.

Пример кода:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...