Django Форма с зависимыми формами ForeignKey на одной странице

Добрый день, я пытаюсь реализовать django с зависимыми foreignkey формами на одной странице. У меня есть три moodel Store, Product и ProductClothing. Все они связаны с ForeignKey соответственно. Пользователи создают свой магазин отдельно и перенаправляются на страницу детализации магазина, где им нужно загрузить продукты. Но на этот раз я хочу, чтобы они загружали сразу и продукты, и одежду. Ниже приведены мои models.py и views.py того, что я имею в настоящее время на странице детального просмотра магазина. Также я получаю следующую ошибку:

error.py
NOT NULL constraint failed: product_productclothing.product_id
models.py
class Store(models.Model):
    owner = models.ForeignKey(Profile, null=True, on_delete=models.SET_NULL)
    name = models.CharField(max_length=100, unique=True)
    slug = AutoSlugField(populate_from='name', unique=True)
    description = models.CharField(max_length=255, blank=True)

    def __str__(self):
        return self.name

class Product(models.Model):
    store = models.ForeignKey(Store, null=True, on_delete=models.SET_NULL)
    owner = models.ForeignKey(Profile, null=True, on_delete=models.SET_NULL)
    title = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=9, decimal_places=2, verbose_name=_("Regular price"))

class ProductClothing(models.Model):
    CLOTHING_GENDER_CHOICES = (
        ('M', 'Male',),
        ('F', 'Female',),
        ('U', 'Unisex',),
    )
    CLOTHING_TYPE_CHOICES = (
        ('dress', 'Dresses',),
        ('fabric', 'Fabrics',),
        ('shirt', 'Shirts',),
        ('suit', 'Suits',),
        ('tshirt', 'T-Shirts',),
        ('base_layers', 'Base_Layers',),
        ('blazer', 'Blazers',),
    )

    product = models.OneToOneField(Product, on_delete=models.CASCADE)
    gender = models.CharField(max_length=10, choices=CLOTHING_GENDER_CHOICES, blank=True, null=True)
    clothing_type = models.CharField(max_length=255, choices=CLOTHING_TYPE_CHOICES, blank=True, null=True)

    def __str__(self):
        return self.product.title

views.py
@login_required
def store_dashboard_view(request, slug):
    store = get_object_or_404(Store, slug=slug)
    new_product = None
    product_clothing = None
    
    if request.user.profile == store.owner:
        if request.method == 'GET':
            product_form = ProductForm()
            product_clothing_form = ProductClothingForm()
        if request.method == 'POST':
            product_form = ProductForm(data=request.POST)
            product_clothing_form = ProductClothingForm(data=request.POST)
            
            if product_form.is_valid() and product_clothing_form.is_valid():
                new_product = product_form.save(commit=False)
                product_clothing_form.save(commit=False)
                new_product.store = store
                new_product.owner = request.user.profile
                product = product_form.save()
                product = product
                product_clothing_form.product = product
                product_clothing_form.save()
                print(request.user.first_name)
                return redirect('/')
                

        context = {
            "object":store,
            "form": product_form,
            "product_clothing_form": product_clothing_form
        }
        return render(request, "store/store-dashboard.html", context)
    else:
        return redirect('store:store-detail-view', slug=store.slug)



Попробуйте изменить эту часть

        if product_form.is_valid() and product_clothing_form.is_valid():
            new_product = product_form.save(commit=False)
            product_clothing_form.save(commit=False)
            new_product.store = store
            new_product.owner = request.user.profile
            product = product_form.save()
            product = product
            product_clothing_form.product = product
            product_clothing_form.save()
            print(request.user.first_name)
            return redirect('/')

to

        if product_form.is_valid() and product_clothing_form.is_valid():
            new_product = product_form.save(commit=False)
            product_clothing_form = product_clothing_form.save(commit=False)
            new_product.store = store
            new_product.owner = request.user.profile
            new_product.save() #this is correct your mistake was here
            print(new_product)
            product_clothing_form.product = new_product
            product_clothing_form.save()
            print(request.user.first_name)
            return redirect('/')
Вернуться на верх