POST表单不写入Django数据库

时间:2016-03-09 22:28:33

标签: python django django-forms django-templates django-views

我在从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。

0 个答案:

没有答案