2015-12-25 55 views
0

model 1form.save(提交= FALSE)未返回實例ID

class Products(models.Model): 
    product_category = models.ForeignKey(ProductCategory) 
    product_sub_category = models.ForeignKey(ProductCategory) 
    product_name = models.CharField(max_length = 200) 
    is_active = models.BooleanField(default = True) 
    and so on... 

model 2

class ProductImages(models.Model): 
    product = models.ForeignKey(Products) 
    product_image = models.FileField(_('Attachment'), upload_to='attachments') 
    is_active = models.BooleanField(default = True) 

CreateView

class ProductCreate(CreateView): 
    model = Products 
    template_name = "products/product_add.html" 
    fields = ['product_category', 'product_sub_category', 'product_name', 'size', 'color', 'price', 'price_info', 'description_1', 'description_2', 'about_product', 'features', 'specification'] 
    success_url = "products/product-list" 

    def form_valid(self, form): 
     product_form = form.save(commit = False) 
     # **expecting product_form.id to be non None** 
     if 'product_images' in self.request.FILES: 
      for img in self.request.FILES.getlist('product_images'): 
       ProductImages(product = product_form, product_image = img).save() 

     super(ProductCreate, self).post(request, *args, **kwargs) 

問題陳述:
form.save(COMMIT =假)返回產品實例但產品ID是無。因爲對象還沒有保存到數據庫,期望對象ID是否是非法的?

回答

0

是的。該ID由數據庫分配,並且因爲commut=False明確表示「不發送給數據庫」,所以它不會有ID。

+0

如何在產品之前保存產品圖像? –

+0

只要刪除提交= False。 –

+0

'超級(ProductCreate,self).post(request,* args,** kwargs)'不會再保存表單嗎? –

相關問題