2017-02-20 4 views
0

私は2枚のモデルの製品と製品の画像を持っている今、私は管理者からの製品と画像を追加したいインラインモデル

製品モデル

class Products(models.Model): 
    id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=250) 
    description = models.TextField(null=True) 
    category = models.ForeignKey(ProductCategory, null=True, blank=True) 
    business = models.ForeignKey(BpBasic, default=BpBasic.get_admin_business().bp_id) 
    created_at = models.DateTimeField(default=timezone.now) 
    updated_at = models.DateTimeField(default=None, null=True) 
    created_by = models.ForeignKey(User, null=False, blank=False, related_name='product_created_by') 
    updated_by = models.ForeignKey(User, null=True, blank=False, related_name='product_updated_by') 

製品イメージモデル

class ProductImage(models.Model): 
    product = models.ForeignKey(Products, null=False, on_delete=models.CASCADE, related_name='product') 
    image = models.ImageField(upload_to='media/products/') 
    primary = models.BooleanField(default=False) 
    created_at = models.DateTimeField(default=timezone.now) 
    updated_at = models.DateTimeField(default=None, null=True) 
    created_by = models.ForeignKey(User, null=False, blank=False, related_name='prod_image_created_by') 
    updated_by = models.ForeignKey(User, null=True, blank=False, related_name='prod_image_updated_by') 

商品画像インラインモデル

class ProductImageInline(admin.StackedInline): 
    model = ProductImage 
    exclude = ('created_at', 'updated_at', 'created_by', 'updated_by') 
    extra = 1 
製品

coercing to Unicode: need string or buffer, ImageFieldFile found 

私はファイルの保存上記のエラーを取得していますを節約しながら

製品管理モデル

class ProductAdmin(admin.ModelAdmin): 
    model = Products 
    list_display = ('name', 'description', 'category') 
    fieldsets = [ 
     ('Product Details', {'fields': ['name', 'description']}), 
     ('Product Category', {'fields': ['category']}) 
    ] 
    inlines = [ProductImageInline] 

    def save_formset(self, request, form, formset, change): 
     def set_user(instance): 
      if not change: 
       instance.created_by = request.user 
      else: 
       instance.updated_by = request.user 
      instance.save() 
     print formset 
     instances = formset.save(commit=False) 
     print list(instances) 
     map(set_user, instances) 
     instances.save() 
     return instances 

    def save_model(self, request, obj, form, change): 
     if not change: 
      obj.created_by = request.user 
      obj.business = request.user.profile.business 
     else: 
      obj.updated_by = request.user 
     obj.save() 
     return obj 

は、だから私は問題を抱えています。助けてください!お使いのモデルの一部に(あなたがのpython3を使用している場合や__str__)あなたは__unicode__方法に問題があるよう

管理UI私が正常に生成している enter image description here

答えて

0

が見えます。これは、モデルの文字列表現のための特別なメソッドなので、文字列を返す必要があります。
例:

class ProductImage(models.Model): 
    ... 
    def __unicode__(self): 
     return 'Image created at {}'.format(self.created_at) 
関連する問題