Django self.save () не обновляет статус модели - PullRequest
0 голосов
/ 10 марта 2020

У меня есть очень простая модель и файл представления py для кошек (пытаюсь проверить / изучить основные c особенности django. Однако статус счастья кошки никогда не обновляется.

class Cats(models.Model):
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
    name = models.CharField(max_length = 200)
    description = models.TextField()
    happiness = 6

    def pet(self):
        self.happiness = self.happiness+1
        self.save()
from django.shortcuts import render, get_object_or_404
from .models import Cats

def cat_detail(request, pk):
    cat = get_object_or_404(Cats, pk=pk)
    return render(request, 'cats/cat_detail.html', {'cat': cat})

def cat_interact(request, pk, action):
    cat = get_object_or_404(Cats, pk=pk)
    pet = False
    if(action == 1):
        cat.pet()
        pet = True
    return render(request, 'cats/cat_interact.html', {'cat': cat, 'pet': pet})

действие всегда будет равно 1 (это единственное возможное текущее действие). Внутри файла html и «детали» и «взаимодействия» я распечатываю статус счастья кота. Когда я go взаимодействую на странице, состояние счастья кошки печатается как 7 (так как счастье по умолчанию / начало равно 6). Я ожидаю, что это значение (7) будет сохранено в базе данных, и когда я go снова перейду на страницу сведений, оно также напечатает 7. Однако , даже после запуска функции cat.play () на странице сведений она по-прежнему выводит значение по умолчанию 6. Это значение никогда не сохраняется в базе данных? Не работает ли self.save () в этом случае? изменить мой код?

1 Ответ

2 голосов
/ 10 марта 2020

Ваш happiness не подключен к вашей базе данных, вы должны записать его следующим образом

class Cats(models.Model):
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
    name = models.CharField(max_length = 200)
    description = models.TextField()
    happiness = models.IntegerField(default = 6)

, тогда эта часть

def pet(self):
    self.happiness = self.happiness+1
    self.save()

сохранит happiness в БД

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...