Django通过外键形成
问题描述:
我是django的新手。Django通过外键形成
我需要从请求中获取id,并且在创建表单时,我想让它从此值中创建indintid字段的值,并从表单本身中休息。
models.py
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
views.py
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)
forms.py
class FirForm(forms.ModelForm):
class Meta:
model=Fir
fields=[
"firid",
"signedby",
"content"]
答
您已经与commit=False
储蓄,你只需要之前设置现场投诉呼叫instance.save()
。
您可以使用get_object_or_404
来确保id
是一个有效的投诉ID。
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()
...
请注意,您可能需要添加更多验证。 - 目前用户可以通过更改网址中的ID来更改投诉。
+0
感谢您的帮助.im一个noob在这 –
你的问题是? – Selcuk
我想从url中添加投诉ID并将其设置为表单,并将其余的值形式在fir_create函数im传递id中的fir形式..我想用它来保存为投诉ID –