Как исключить поле, но сохранить его данные?
Я создаю приложение для хранения информации о домашних животных. Я отображаю форму для вставки данных с профилем пользователя. Я не хочу отображать родительский вариант, потому что он должен сохраняться автоматически, но не знаю, как это сделать. Если я исключаю родителя, то форма не появляется, но информация о питомце не связана с пользователем.
forms.py:
class PetForm(ModelForm):
class Meta:
model = Pet
exclude = ('parent',)
models.py:
class Pet(models.Model):
pet_name = models.CharField(max_length=200)
parent = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True, blank=True)
def __str__(self):
return self.pet_name
вам нужно сделать это в вашем представлении.
form = PetForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.parent = parent
instance.save()
конечно, вы должны указать и родительский объект.
Да, вы можете работать с commit=False
при сохранении в форме методом POST
, смотрите пример ниже.
Попробуйте этот вид:
views.py
def some_view_name(request):
if request.method=="POST":
form = PetForm(request.POST)
if form.is_valid():
pet = form.save(commit=False)
pet.parent = request.user.profile.id
pet.save()
else:
form = PetForm()
return render(request,'any_folder_name/any_file.html',{"form":form})