POST表单未写入Django数据库

2024-04-19 13:28:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的视图.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')

我的型号.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

仅供参考:fname是将ContactDetails模型与ContactList关联的外键。你知道吗

我的ORM查询有问题吗?它们类似于我用来通过python创建一些初始“联系人”的那些管理.py贝壳。你知道吗


Tags: textnameidinputgetmodelsemailrequest