節省我有一個的ModelForm:Many2ManyField不是通過Modelforms
class POwner4NewModel(ModelForm):
class Meta:
model = ProductOwner
exclude = ("o_owner","o_owner_desc","o_product_model","o_main_image","o_thumbnail","o_gallery_images","o_timestamp","o_status")
這是模型的模式:
class ProductOwner(models.Model):
o_owner = models.ForeignKey(User, verbose_name="Owner")
o_owner_desc = models.TextField(verbose_name="Seller Description")
o_product_model = models.ForeignKey(ProductModel, verbose_name="Product")
o_main_image = models.ImageField(upload_to=settings.CUSTOM_UPLOAD_DIR, verbose_name="Product Main Image", blank=True)
o_thumbnail = models.ImageField(upload_to=settings.CUSTOM_UPLOAD_DIR, verbose_name="Product Thumbnail (100x100)px", blank=True)
o_gallery_images = models.ManyToManyField(ProductImages, verbose_name="Product Gallery Images", related_name="product_images", blank=True)
o_status = models.CharField(max_length=100, choices=PRODUCT_STATUS, verbose_name="Product Status", default="approved")
o_timestamp = models.DateTimeField(auto_now_add=True, verbose_name="Date Created")
o_internationlisation = models.ManyToManyField(Countries, verbose_name="Available in", related_name="product_countries")
這是我的代碼試圖保存表單:
def save_m_owner(self, request):
form = POwner4NewModel(request.POST, request.FILES)
form = form.save(commit=False)
form.o_owner = request.user
form.o_owner_desc = self.product_model.p_description
form.o_product_model = self.product_model
form.o_status = "unapproved"
form.o_main_image = self.product_model.p_main_image
form.save()
我試過添加form.save_m2m(),但它表示窗體沒有該屬性。所以現在,在使用o_internationlisation的字段中,m2m不會被保存。我不確定我在這裏做錯了什麼,可以使用一些幫助,謝謝!
你在哪裏試圖調用'save_m2m()'?它必須在'save()'方法之後。順便說一句,在第一個代碼示例中,最後一行(拼寫錯誤?)的末尾有'v'。 – 2010-02-07 21:43:29
save()後,我打電話給它,是錯字,感謝您發現;) – nubela 2010-02-07 22:15:42