[英]How to initialize foreign key into a form in Django?
我有這兩個模型,一個 Voucher model 是 RegistrationForm model 的外鍵。任何時候有人進行搜索並且該項目存在於 Voucher model 中,我希望將其初始化為注冊表並保存。
錯誤信息
raise ValueError(
ValueError: Cannot assign "'phr201'": "RegistrationForm.voucher" must be a "Voucher" instance.
楷模
class Voucher(models.Model):
name = models.CharField(max_length=120, null=True, blank=True)
class RegistrationForm(models.Model):
voucher = models.OneToOneField(Voucher, on_delete=models.CASCADE)
full_Name = models.CharField(max_length=200,)
Date_of_birth = models.CharField(max_length=100)
查看.py
class RegistrationProcessing(generic.CreateView):
form_class = Registerform
template_name = 'RegistrationProcessing.html'
def form_valid(self, form):
form.instance.voucher = self.request.GET.get('q')
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super(RegistrationProcessing, self).get_context_data(**kwargs)
query = self.request.GET.get('q', default='')
print(query.id)
context.update({
'job_listing': Voucher.objects.filter(
Q(name__iexact=query)
)
})
return context
正如錯誤所說Cannot assign "'phr201'": "RegistrationForm.voucher" must be a "Voucher" instance
你試圖將一個字符串分配給OneToOne
關系你必須傳遞一個Voucher實例而不是傳遞字符串你'必須這樣做
def form_valid(self, form):
voucher_instance = Voucher.objects.get(name=self.request.GET.get('q'))
form.instance.voucher = voucher_instance
return super().form_valid(form)
在這里我使用 get 所以如果給定的查詢不存在它會引發異常你必須在 try except 塊中處理它或者你可以使用其他方式這樣
Voucher.objects.filter(name=self.request.GET.get('q')).first()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.