Raise AppRegistryNotReady("Models aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet
this is django rest_framework api I created this api for restourant. This is menu api . I want to save menu.json's data to my database, but I could not. Can you give any advice to save json data to my models. I got this error:
File "C:\Users\OSMAN MERT\AppData\Local\Programs\Python\Python310\lib\site-packages\django\utils\functional.py", line 49, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\OSMAN MERT\AppData\Local\Programs\Python\Python310\lib\site-packages\django\db\models\fields\related.py", line 113, in related_model
apps.check_models_ready()
File "C:\Users\OSMAN MERT\AppData\Local\Programs\Python\Python310\lib\site-packages\django\apps\registry.py", line 143, in check_models_ready
raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
models.py
class Meal(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
is_vegetarian = models.BooleanField(default=False)
is_vegan = models.BooleanField(default=False)
def __str__(self):
return self.name
class Ingredient(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
#groups = models.CharField(max_length=100)
#meal = models.ForeignKey(Meal, on_delete=models.CASCADE, related_name='ingredients')
def __str__(self):
return self.name
class Option(models.Model):
id = models.AutoField(primary_key=True)
ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
quality = models.CharField(max_length=100)
price = models.FloatField()
per_amount = models.CharField(max_length=100)
def __str__(self):
return self.name
class MealIngredient(models.Model):
id = models.AutoField(primary_key=True)
meal = models.ForeignKey(Meal, on_delete=models.CASCADE)
ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
path = r"C:\Users\OSMAN MERT\Desktop\menu\menu_core\menu.json"
with open(path) as f:
data = json.loads(f.read())
for meal in data["meals"]:
id = meal["id"]
name = meal["name"]
meal_obj, created = Meal.objects.get_or_create(name=name)
for ingredient in meal["ingredients"]:
name_in = ingredient["name"]
ingredient_obj, created = Ingredient.objects.get_or_create(name=name_in)
MealIngredient.objects.get_or_create(meal=meal_obj, ingredient=ingredient_obj)
for ingre in data["ingredients"]:
ingre_name = ingre["name"]
ingre_obj, created = Ingredient.objects.get_or_create(name=ingre_name)
for opti in ingre["options"]:
opt_name = opti["name"]
opt_quality = opti["quality"]
opt_price = opti["price"]
opt_amount = opti["per_amount"]
Option.objects.get_or_create(ingredient=ingre_obj, name=opt_name, quality=opt_quality,
price=opt_price, per_amount=opt_amount)
This is some data from menu.json not all code include there. menu.json
{
"meals": [
{
"id": 1,
"name": "Rice and chicken bowl",
"ingredients": [
{ "name": "Rice", "quantity": 120, "quantity_type": "gram" },
{ "name": "Chicken", "quantity": 85, "quantity_type": "gram" }
]
},
{
"id": 2,
"name": "Pasta with marinara sauce and vegetables",
"ingredients": [
{ "name": "Pasta", "quantity": 115, "quantity_type": "gram" },
{
"name": "Marinara sauce",
"quantity": 120,
"quantity_type": "millilitre"
},
{ "name": "Vegetables", "quantity": 240, "quantity_type": "gram" }
]
},
{
"id": 3,
"name": "Grilled chicken with roasted vegetables",
"ingredients": [
{ "name": "Chicken", "quantity": 85, "quantity_type": "gram" },
{ "name": "Vegetables", "quantity": 240, "quantity_type": "gram" }
]
}
],
"ingredients": [
{
"name": "Rice",
"groups": ["vegan", "vegetarian"],
"options": [
{
"name": "Long grain white rice",
"quality": "high",
"price": 3,
"per_amount": "kilogram"
},
{
"name": "Medium grain brown rice",
"quality": "medium",
"price": 2,
"per_amount": "kilogram"
},
{
"name": "Quick cooking white rice",
"quality": "low",
"price": 1.5,
"per_amount": "kilogram"
}
]
}]