Как передать объект в поле модели в Django?

Я пытаюсь передать объект, полученный из формы модели, в поле модели.

Здесь задействованы три модели. Patient, Donation и Donor

Вот модели:

class Donor(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    donor_dob = models.DateField(auto_now=False,  auto_now_add=False, default=None)
    id_card = models.CharField(max_length=7)
    phone_number = models.CharField(max_length=7)
    blood_group = models.CharField(max_length=20, choices=BLOOD_GROUPS, default='O_Positive')
    availability = models.BooleanField(default=True)
    donor_donation = models.ForeignKey(
        'Donation', blank=True, null=True, on_delete=models.DO_NOTHING)


class Patient(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=30)
    patient_dob = models.DateField(auto_now=False,  auto_now_add=False, default=None)
    id_card = models.CharField(max_length=7)
    phone_number = models.CharField(max_length=7)
    blood_group = models.CharField(max_length=20, choices=BLOOD_GROUPS, default='O+')


class Donation(models.Model):
    donation_donor = models.ForeignKey(
        Donor, on_delete=models.CASCADE, related_name='donations')
    patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
    donation_date = models.DateTimeField(auto_now=True)
    amount = models.DecimalField(max_digits=5, decimal_places=2)

Я использую DonationForm для ввода новой записи о пожертвовании.

вот форма:

class DonationForm(forms.ModelForm):
    donation_donor = forms.ModelChoiceField(
        queryset=Donor.objects.filter(availability=True))

    class Meta:
        model = Donation
        fields = ['donation_donor', 'patient', 'amount']

и, наконец, вот представление для ввода нового объекта/записи пожертвования

def new_donation(request):
    if request.method == 'POST':
        form = DonationForm(request.POST or None)
        # print(request.POST)
        print(request.POST['donation_donor'])
        if form.is_valid():
            donor = Donor.objects.get(id=request.POST['donation_donor'])
            donor.availability = False
            print('Donor: ', donor)
            donation = form.save()
            form.save()
            donor.donation_donor = donation
            donor.save()
            donor = setattr(donor, 'donation_donor', donation)
            print(donor)

            return render(request, 'new_donation.html', {'form': form})
    form = DonationForm()
    return render(request, 'new_donation.html', {'form': form})

ЧТО Я ПЫТАЮСЬ СДЕЛАТЬ

Когда я получаю объект пожертвования из form.save(), я присваиваю этот объект в переменную `donation' здесь, и я хочу присвоить/передать этот объект полю donor_donation в модели Donor, которое является ForeignKey к модели Donation.

Я думал, что смогу изменить это поле так же, как я установил доступность Donor на False, но это не сработало. Как мне обойти это?

Вернуться на верх