Я пытаюсь написать скрипт, который будет заполнять базу данных из файла json. Это выглядит так:
class Command(BaseCommand):
def handle(self, *args, **options):
categories = load_from_json('categories')
ProductCategory.objects.all().delete()
for category in categories:
new_category = ProductCategory(**category)
new_category.save()
restaurants = load_from_json('restaurants')
Restaurant.objects.all().delete()
for restaurant in restaurants:
category_name = restaurant['category']
_category = ProductCategory.objects.get(name=category_name)
restaurant['category'] = _category
new_restaurant = Restaurant(**restaurant)
new_restaurant.save()
Когда я запускаю его, django выдает ошибку: прямое назначение передней стороне множества «многие ко многим» запрещено. Вместо этого используйте category.set ().
Мои модели выглядят так:
class ProductCategory(models.Model):
name = models.CharField(verbose_name='наименование категории', max_length=64, unique=True)
image = models.ImageField(upload_to='category_images', blank=True)
description = models.TextField(verbose_name='описание категории', blank=True)
def __str__(self):
return self.name
class Restaurant(models.Model):
name = models.CharField(verbose_name='наименование ресторана', max_length=64, unique=True)
description = models.TextField(verbose_name='описание категории', blank=True)
image = models.ImageField(upload_to='restaurant_images', blank=True)
category = models.ManyToManyField(ProductCategory)
def __str__(self):
return self.name
Похоже, многие сталкивались с этой проблемой, но я изо всех сил пытаюсь найти решение этой проблемы.