Django passing foreign key to form
我刚认识姜戈。
我需要从请求中获取ID,当创建表单时,我希望它从该值中获取complaintid字段的值,从表单本身中获取其余值。
型号.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Complaint(models.Model): complaintid= models.AutoField(primary_key=True) dateofcomplaint=models.DateTimeField(auto_now=False, auto_now_add=True) content = models.TextField() policestation= models.CharField(max_length=120) location=models.TextField() def __unicode__(self): return unicode(self.complaintid) def __str__(self): return self.complaintid def get_absolute_url(self): return reverse("crimefiles:detail", kwargs={"id":self.complaintid}) class Fir(models.Model): firid=models.CharField(max_length=10,primary_key=True) complaintid=models.ForeignKey(Complaint,default=None) signedby= models.CharField(max_length=20) content=models.TextField(default="First Information Report") def __unicode__(self): return self.firid def __str__(self): return self.firid |
视图.py
1 2 3 4 5 6 7 8 9 10 11 | def fir_create(request,id=None): form =FirForm(request.POST or None) if form.is_valid(): instance=form.save(commit=False) instance.save() messages.success(request,"sucessfully Created") return HttpResponseRedirect() context={ "form":form } return render(request,"fir_form.html",context) |
号
表格.py
1 2 3 4 5 6 7 | class FirForm(forms.ModelForm): class Meta: model=Fir fields=[ "firid", "signedby", "content"] |
您已经使用
您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | from django.shortcuts import get_object_or_404 def fir_create(request,id=None): if id is not None: complaint = get_object_or_404(Complaint, id=id) else: complaint = None form =FirForm(request.POST or None) if form.is_valid(): instance=form.save(commit=False) instance.complaint = complaint instance.save() ... |
请注意,您可能需要添加更多验证。-目前,用户只需更改URL中的ID就可以更改投诉。