product_category_ids = []
# create products
products = []
for item in items:
product = Product(
price=item[0],
shipping=item[1],
)
products.append(product)
category_ids = ... # get category ids from the input data
product_category_ids.append(category_ids)
product_ids = Product.objects.bulk_create(products)
# create m2m relations between products and categories
product_categories = []
for product_id, category_ids in zip(product_ids, product_category_ids):
for category_id in category_ids:
product_category = Product.categories.through(
product_id=product_id,
category_id=category_id,
)
product_categories.append(product_category)
Product.categories.through.objects.bulk_create(product_categories)
>>> import os
>>> os.path.splitext('file.ext')[1].lower()
'.ext'
>>> os.path.splitext('file')[1].lower()
''
>>> filename, ext = 'file.ext'.split('.')
>>> print(filename, ext)
file ext
>>> filename, ext = 'file'.split('.')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 2, got 1)
>>> filename, ext = 'file.ext.ext'.split('.')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
_, ext = path.splitext(name)
ext = os.path.splitext(filename)[1].lower()
Toptal не диктует ставок, предполагая, что опытный фрилансер знает свою, адекватную рынку ставку
40 - 16
50 - 20
65 - 25
75 - 29
90 - 35
./manage.py makemigrations
./manage.py migrate
Либо фильтровать (используя в качестве фильтра не только строки из базы, но и из списка - если есть несколько продуктов с одинаковым айдишником, добавляться должен только один из них), либо заменить create на update_or_create / get_or_create.