django - 如何将对象传递给 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() 获得捐赠对象时,我将该对象分配到此处的“捐赠”变量中,并且我想将该对象分配/传递给 Donor 模型中的donor_donation 字段,该字段是捐赠模型的 ForeignKey。
我以为我可以更改该字段,就像我在此处将 Donor 的可用性设置为 False 一样,但它不起作用。我应该如何解决这个问题?
解决方案
推荐阅读
- docker-compose - docker-compose > 气流 > git-sync 错误
- json - 获取“列表”类型的错误
' 不是类型 'Map 的子类型 ' - javascript - Heroku 错误:应用程序发生错误,无法提供您的页面
- python-3.x - 推理模型!!!(一句话的单词重要性)python3
- java - 大写转换——将字符串中每个单词的首字母转换为大写
- javascript - 禁用当前选择,直到在前一个选择中输入某个值
- amazon - 我无法在 Amazon Selling Partner API 的报告中显示我的库存
- c# - Xcode(版本 12.5.1)模拟器没有导航过去我的 Xamarin Forms 应用程序中的某些页面
- git - 如何使用 rebase 从 repo 中提取而不获得较旧的提交
- python - 从偏正态分布下的列表中选择项目(Python 和 Scipy?)