我在从html表单中获取数据以将新内容写入sqlite数据库时遇到了一些麻烦。我曾经使用类似的东西来编辑最初通过shell创建的现有条目(联系人),但在创建新条目时它似乎不起作用。当我提交表单时,它会显示相同的页面,但是空白,并且不会重定向我。
我的HTML:
<form action="{% url 'contactmanager:addnewcontact' %}" method="POST">
{% csrf_token %}
<ul>
<li><label>First Name: </label> <input type="text" name="fname" id="fname"/></li>
<li><label>Last Name: </label> <input type="text" name="lname" id="lname"/></li>
<li><label>Email: </label> <input type="text" name="email" id="email"/></li>
<li><label>Phone Number: </label> <input type="text" name="pnumber" id="pnumber"/></li>
<li><label>Notes: </label> <input type="text" name="notes" id="notes"/></li>
</ul>
<input type="submit" value="Create" />
</form>
我的view.py:
def addnewcontact(request):
contact = ContactList(fname=request.POST.get('fname'), lname=request.POST.get('lname'))
contact.save()
contactinfo = ContactList.objects.get(pk=contact.id)
contactinfo.contactdetails_set.create(lname=request.POST.get('lname'), email=request.POST.get('email'), pnumber=request.POST.get('pnumber'), notes=request.POST.get('notes'))
return HttpResponseRedirect('contactmanager/index.html')
我的models.py:
class ContactList(models.Model):
fname = models.CharField(max_length=200)
lname = models.CharField(max_length=200)
def __str__(self):
contact_name = self.fname + ' ' + self.lname
return contact_name
class ContactDetails(models.Model):
fname = models.ForeignKey(ContactList, on_delete=models.CASCADE)
lname = models.CharField(max_length=200)
email = models.CharField(max_length=200)
pnumber = models.CharField(max_length=15)
notes = models.TextField(default = ' ')
def __str__(self):
return self.email
FYI:fname是将ContactDetails模型与ContactList相关联的外键。
我的ORM查询有问题吗?它们类似于我用来创建一些初始联系人的联系人。通过python manage.py shell。