Как исключить поле, но сохранить его данные?

Я создаю приложение для хранения информации о домашних животных. Я отображаю форму для вставки данных с профилем пользователя. Я не хочу отображать родительский вариант, потому что он должен сохраняться автоматически, но не знаю, как это сделать. Если я исключаю родителя, то форма не появляется, но информация о питомце не связана с пользователем.

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})
Вернуться на верх