Как установить поле foreignkey в представлениях

Я пытаюсь сохранить поле customer в тестовой модели, я не получаю никаких ошибок, но и поле не сохраняется, как мне это исправить?

Модели

class Test(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
    email = models.EmailField(max_length=200, blank=False)

Forms

class TestForm(forms.Form):
    email = forms.EmailField(required=True)

    class Meta:
        model = Test
        fields = ("email")

    def save(self, commit=False):
            # Creating the customer object
            Test.objects.create(email=self.cleaned_data['email'])

Виды

def test_view(request):
    customer = request.user.customer

    if form.is_valid():
        email = form.cleaned_data['email']
        customer = customer
        form.save()

Вам нужно использовать ModelForm, затем сохранить объект без фиксации, отредактировать клиента объекта, затем зафиксировать.

class TestForm(forms.ModelForm):

    class Meta:
        model = Test
        fields = ["email", ]

def test_view(request):
    customer = request.user.customer #I'm not sure this line is right, but I can't see all your models

    if form.is_valid():
        test = form.save(commit=False)
        test.customer = customer
        test.save()

Для сохранения ModelForm можно использовать cleaned_data.

forms.py

class TestForm(forms.ModelForm):

    class Meta:
        model = Test
        fields = ["email"]

Предполагается, что у вас метод запроса POST.

views.py

def test_view(request):
    if request.method=="POST":
        form=TestForm(request.POST)
 
        customer = request.user.customer

        if form.is_valid():
            email = form.cleaned_data['email']
            test=Test(customer=customer,email=email)
            test.save()
Вернуться на верх