Django JSON не сохраняется в базе данных sqlite

Я просто тестирую некоторые вещи, чтобы понять, как работает Django в целом.

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

Вот фрагмент моего models.py файла

class Recipes(models.Model):
    name = models.CharField(max_length=120, default='')
    pub_date = models.DateTimeField('date published')
    style = models.CharField(max_length=200, default='')
    brewer = models.CharField(max_length=100, default='')
    type = models.CharField(max_length=20, default='All Grain')
    version = models.CharField(max_length=20, default='1')
    batch_size = models.DecimalField(decimal_places=2, max_digits=8, default=0.0)
    boil_size = models.DecimalField(decimal_places=2, max_digits=8, default=0.0)
    boil_time = models.DecimalField(decimal_places=1, max_digits=4, default=0.0)
    efficiency = models.DecimalField(decimal_places=1, max_digits=4, default=75.0)
    ibu = models.DecimalField(decimal_places=1, max_digits=4, default=0.0)
    abv = models.DecimalField(decimal_places=2, max_digits=4, default=0.0)
    notes = models.TextField(default='')
    carbonation = models.DecimalField(decimal_places=2, max_digits=4, default=0.0)
    primary_age = models.DecimalField(decimal_places=1, max_digits=4, default = 0)
    secondary_age = models.DecimalField(decimal_places=1, max_digits=4, default = 0)
    age = models.DecimalField(decimal_places=1, max_digits=4, default = 0)
    __fermentables = []
  
    @classmethod
    def create(cls,attr):
        recipe = cls()
        # do something with the book
        for k in Recipes._meta.fields:
            if  k.name in attr:
                setattr(recipe,k.name,attr[k.name])
        return recipe

Вот часть views.py, которая вызывает у меня затруднения

def saveRecipe(request):
        try:
            data=json.loads(request.read())
            print("printing values")
            print(data["name"])  #prints here works
            recipe = Recipes.create(attr=data)
            recipe.name = data["name"]
            recipe.save()
            recipe.addYeast(items=data["yeast"])
            recipe.addFermentables(items=data["fermentables"])
            recipe.addHops(items=data["hops"])
            recipe.addMashStep(items=data["mash"])
            return  HttpResponse(serialize('json', [recipe]),  content_type='application/json')
        except:
           
            return HttpResponse("error")

В основном у меня есть кнопка, которая анализирует JSON из заполненных форм, и когда я печатаю имя print(data["name"]), оно кажется правильно разобранным.

Теперь я в целях тестирования поместил recipe.save() в ту часть файла views, где вы можете видеть, и я думаю, что технически это должно сохранить разобранную информацию в базу данных, но когда я проверяю базу данных, там ничего нет.

По сути, мой вопрос заключается в том, почему recipe.save() не делает то, что должен, и чего не хватает для правильного сохранения данных?

Для простоты давайте проигнорируем все, что идет после функции сохранения.

Вернуться на верх