Many2ManyField не сохраняется с помощью Modelforms - PullRequest
0 голосов
/ 08 февраля 2010

У меня есть модель формы:

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 не сохраняется. Я не уверен, что я делаю здесь не так, мог бы помочь, спасибо!

1 Ответ

4 голосов
/ 08 февраля 2010

форма не имеет save_m2m(), потому что вы перезаписали form экземпляром модели, когда вы сделали form = form.save(commit=False)

попробуйте использовать что-то еще, например instance = form.save(commit=False) и т. Д., Тогда вы сможете использовать form.save_m2m() (конечно, после instance.save()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...