0

我有一个具有 3 个字段的模型,namequalificationkeyskills。该keyskills字段以逗号分隔值的形式给出输入,例如"c,c++,java"name来自文本框和qualification下拉菜单的 。

我想显示keyskills要存储在数据库中的单独行中。我已经做了。但是,当我输入一个空值时,例如 ,"c,c++,,java"数据库不应该接受介于两者之间的空值 - 它应该转到下一个值"java"

我的模型.py

class form1(models.Model):
    name=models.CharField(max_length=20)
    qualification=models.CharField(max_length=20)
    keyskills=models.CharField(max_length=50)
    def __unicode__(self):
        return self.name,self.qualification,self.key

视图.py

def formdisplay(request):
    if request.method=='POST':
        i1=request.POST.get("input1")
        i2=request.POST.get("drop1")
        i3=request.POST.get("input2")
        var=i3.split(",")
        for i in var:
            form1(name=i1,qualification=i2,keyskills=i).save()
        return HttpResponseRedirect('/formdisplay')
    else:
        return render(request,"formdisplay.html"

表单显示.html

<html>
<head>
</head>
<body>
<form action="." method="post">{% csrf_token %}
<input type="text" name="input1">
<select name="drop1">
<option>B.E cse</option>
<option>B.E ece</option>
<option>B.E eee</option>
</select>
<input type="text" name="input2">
<input type="submit" value="save">
</form>
</body>
</html>
4

2 回答 2

0

如果我理解正确,那么您只需要添加一个 if 条件来检查字符串是否为空:

演示:

>>> s = "c,c++,,java"
for i in s.split(','):
    if i:
        print i

c
c++
java

因此,对于您的代码,它将是:

for i in var:
    if i:
       form1(name=i1,qualification=i2,keyskills=i).save()
于 2013-11-13T06:15:27.207 回答
0
if i3 != None:
  #do something etc
elif i2 != None:
  #do something etc

我认为您正在尝试检查空值,然后执行上述操作 - 只需检查它是否为空值

于 2013-11-13T06:16:58.823 回答