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() не делает то, что должен, и чего не хватает для правильного сохранения данных?
Для простоты давайте проигнорируем все, что идет после функции сохранения.