2016-09-25 10 views
0

Djangoモデルに以下のフィールドを含む在庫リストを作成しています。私は画像の名前がItem Numberに対応する画像でいっぱいのフォルダを持っています。インストールの場合、項目番号はとなり、画像ファイル名は4119.jpgとなります。一致するフィールドと画像名に基づいて画像をアップロード

私は、データベース内のアイテムを反復して対応するイメージをアップロードするスクリプトを作成したいと考えています。どこから始めるべきか考えていただければ幸いです。

あなたは私のコードを見て、あなたが必要な正確に何を実装することができます
from django.db import models 

def directory_path(instance, filename): 
    return '{0}/{1}/{2}'.format(supplier.name, pricelist.item_number, filename) 

class Supplier(models.Model): 
    name = models.CharField(max_length=80) 

    def __str__(self): 
     return self.name 

class PriceList(models.Model): 
    supplier = models.ForeignKey('Supplier', on_delete=models.CASCADE) 
    item_number = models.CharField(max_length=80) 
    description = models.CharField(max_length=120) 
    case_quantity = models.CharField(max_length=80) 
    piece_list_amount = models.CharField(max_length=80) 
    partner_list_amount = models.CharField(max_length=80) 
    upload = models.ImageField(upload_to=directory_path) 


    def __str__(self): 
     return self.item_number 
+0

ディレクトリにところで念頭に置いたファイルの量をキープします。http ://stackoverflow.com/questions/466521/how-many-files-can-i-put-in-a-directory –

+0

@AndreyShipilov私は決して考えなかっただろう!ありがとうございました!! – joshlsullivan

答えて

0

...私はこれがあなたのために役立つことを願っています:

import os 
from Project.settings import BASE_DIR 
from apps.showcase.models import Product 
from django.core.files import File 

obj_id_to_img_filename_mapping = (
    (175, 'full_ef58c1a5af252d4459055481b1bbfa76.jpg'), 
    (176, 'full_2111856a6a092a3c65639aff56070aef.jpg'), 
    (177, 'full_b8154e9b348561ee295c2d1651ecca3c.gif'), 
    # ... 
) 


def update_product_images(): 
    print('Starting upload products images...\n') 
    for product_id, file_name in obj_id_to_img_filename_mapping: 
     if file_name: 
      product = Product.objects.get(pk=product_id) 

      absolute_filename = os.path.join(BASE_DIR, 'apps/showcase/static/showcase/images/initial_data/product', file_name) 
      local_file = open(absolute_filename, 'r') 
      django_file = File(local_file) 

      product.image.save(file_name, django_file, save=True) 

      print(absolute_filename + '\n') 
+0

私のアプリはjpgsのフォルダを持っているので、4119.jpgとデータベースの4119のアイテムをどのようにマッチさせるのですか? – joshlsullivan

+0

この例では、 'pk'によってオブジェクトを取得するのではなく' item_number'でフィルタリングします...あなたがDjangoを初めて使う人なら - 公式チュートリアルを完了してください:) – madzohan

関連する問題