Like in the topic title form doesnt save the products category after selected. It does save the form but not the category.
Here is my codes:
Model form:
class Products(models.Model):
product_name = models.CharField(max_length=255, verbose_name="Ürün Adı")
product_category = models.ManyToManyField(Categories,related_name="products",verbose_name="Ürün Kategorisi",help_text="Birden fazla kategori seçmek için CTRL tuşuna basılı tutunuz. \n Aynı zamanda seçimi iptal etmek için CTRL tuşuna basılı tutup seçimi iptal edilmek istenen kategoriye tıklayın.")
#product_category = models.ForeignKey(Categories, on_delete=models.CASCADE,related_name='products' ,null=True)
product_description = models.TextField(null=True,verbose_name="Ürün Açıklaması")
product_price = models.DecimalField(max_digits=9,decimal_places=2,verbose_name="Ürün Fiyatı")
product_image = models.ImageField(upload_to='products/',verbose_name="Ürün Görseli")
def __str__(self):
return self.product_name
class Meta:
# Admin panelinde nasıl gözükeceği
verbose_name= 'Ürün'
verbose_name_plural = 'Ürünler'
View function:
@login_required
# Obje ekleme fonksiyonu
def dynamic_model_item_add(request,app_label, model_name):
if request.user.is_superuser:
# Modeli getir
try:
model = apps.get_model(app_label, model_name)
except LookupError:
raise Http404("Böyle bir model bulunamadı.")
# Model nesnelerini ve adını al
model_objects = model.objects.all()
verbose_name = model._meta.verbose_name_plural
# Dinamik Model Formu oluştur
ModelForm = modelform_factory(model, fields="__all__")
if request.method == "POST":
form = ModelForm(request.POST, request.FILES)
is_sub_cat = request.POST.get("is_subs") == "on" # Onay kutusu seçilmiş mi ?
parent_category_id = request.POST.get("parent_category") # Seçilen üst kategori
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.is_sub_cat = is_sub_cat
new_obj.save()
if is_sub_cat:
if not parent_category_id:
form.add_error(None,"Alt Kategori olarak belirlediğiniz öğenin bir üst kategorisi olmalıdır!")
else:
try:
parent_cat = Categories.objects.get(id=parent_category_id)
parent_cat.sub_categories.add(new_obj)
new_obj.save()
messages.success(request, 'Başarıyla eklendi!')
#new_obj.sub_categories.add(parent_cat)
#new_obj.parent_categories = Categories.objects.get(id=parent_category_id)
except Categories.DoesNotExist:
form.add_error =(None,"Seçilen üst kategori bulunamadı.")
else:
new_obj.save()
messages.success(request, 'Başarıyla eklendi!')
return redirect(reverse("intern_app:add_model", kwargs={"app_label": app_label, "model_name": model_name}))
else:
form = ModelForm()
categories = Categories.get_main_categories # Sadece ana kategoriler
context = {
"model_objects": model_objects,
"verbose_name": verbose_name,
"form": form,
"categories": categories,
"model_name": model_name
}
return render(request, "intern_app/custom_admin_add_item.html", context)