В настоящее время мне нужно добавить много объектов в сквозную таблицу с помощью python manage.py shell.
Опишу здесь в двух словах модели, не буду захламлять лишними полями.
Итак, у меня есть модель
Product:
class Product(models.Model):
name = models.CharField(max_length=200, db_index=True, unique=True)
slug = models.SlugField(max_length=200, db_index=True, unique=True)
Далее, я реализовал модель
Shop:
class Shop(models.Model):
name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=200, db_index=True)
Мне нужно, чтобы была сквозная таблица, где я бы регулировал, например, цены внутри магазина и остатки внутри магазина, поэтому реализовал модель
ShopQuantity:
class ShopQuantity(models.Model):
shop = models.ForeignKey(Shop, blank=True, on_delete=models.CASCADE, null=True, related_name='product_list')
product = models.ForeignKey(Product, blank=True, on_delete=models.CASCADE, null=True, related_name='shop_list')
price = models.DecimalField(max_digits=10, decimal_places=2, default='0')
quantity = models.IntegerField(blank=True, null=True, default='0')
Для наглядности представлю здесь как выглядит админка для этой структуры:
class ShopQuantityInline(admin.TabularInline):
model = ShopQuantity
extra = 0
@admin.register(Shop)
class ShopAdmin(admin.ModelAdmin):
fields = ['name', 'slug']
list_display = ['name']
inlines = [ShopQuantityInline]
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
fields = ['name', 'slug']
list_display = ['name']
inlines = [ShopQuantityInline]
Допустим, у меня в базе уже есть 1000 единиц товаров. Подскажите, пожалуйста, как я могу поместить эти 1000 товаров в таблицу Shop. Я знаю, что можно использовать manage.py shell, но не понимаю, как это можно сделать.
Я могу создать 1000 объектов для магазина, используя обычный цикл, но получу просто пустые записи (в данном примере я просто создаю 5 записей):
for i in range(5):
p = ShopQuantity.objects.create()
p.save()
На изображение представлена обычная сквозная таблица
ShopQuantity для таблицы
Shop. Именно то, что мне хотелось бы:
и так вплоть до числа имеющихся в базе товаров (если будет 1000, то 1000)
Если кто сталкивался с этим и решил эту проблему, помогите пожалуйста.