Как установить поле 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()