Echofoe
@Echofoe
Веб-разработчик

Как добавить много объектов в базу данных в Django TabularInLine?

В настоящее время мне нужно добавить много объектов в сквозную таблицу с помощью 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. Именно то, что мне хотелось бы:
61546d0114c5d022151176.png
и так вплоть до числа имеющихся в базе товаров (если будет 1000, то 1000)
Если кто сталкивался с этим и решил эту проблему, помогите пожалуйста.
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы