Django-外键约束失败相关错误

时间:2019-10-24 12:41:28

标签: python django sqlite

我是Django的新手,正在做项目类别的练习。每个项目都通过外键属于一个类别。在提交项目详细信息期间,我无法理解代码中的问题。我收到错误消息“ FOREIGN KEY约束失败”。

我编写了models.py的代码,该代码在Django的管理控制台中运行良好,但是如果我尝试通过HTML表单页面实现相同的操作,则会出错。

    models.py

class ColorCat(models.Model):

    name = models.CharField(max_length=20, default="other")
    def __str__(self):
        return self.name

class ListItems(models.Model):
    name = models.CharField(max_length=25, default='item')
    item_cat = models.ForeignKey(ColorCat, on_delete=models.CASCADE, default=0, null=True,blank=True)
views.py

def index(request):
    list = ListItems.objects.all()
    cat = ColorCat.objects.all()
    return render(request, 'colorlist.html', {'color': cat, 'item':list })


def colorlist(request):
    new_list = ListItems
    new_cate = ColorCat

    if request.method=="POST":

        item = str(request.POST["item"])
        cat = str(request.POST["category"])
        f_key = ColorCat.objects.filter(name="orange").get()
        new_list(name="item").save()
        new_list(item_cat=f_key.id).save()
    item = ListItems.objects.all()
    color = ColorCat.objects.all()
    return render(request, 'colorlist.html', {"item": item, "color": color})


def addcat(request):
    if request.method=="POST":
        newcat = str(request.POST["name"])
        ColorCat(name = newcat).save()
        item = ListItems.objects.all()
        color = ColorCat.objects.all()
    return render(request, 'colorlist.html', {"item":item, "color":color})

colorlist.html
{% extends 'base.html'%}
{% block content%}
<h2>Welcome in color cards</h2>


    <form action="addcat" method="POST">
        {% csrf_token %}
        <lable>add new cat<input type="text" name="name"></lable><br>
        <label>submit<input type="submit"></label>

    </form>


    <form action="colorlist" method="post">
        {% csrf_token %}
        <label>new item<input type="text" name="item"></label><br>
        <label>cat<input type="text" name="category"></label><br>
        <label>add item<input type="submit"></label>

    </form>

<!--see saved result-->

    <table>
        <tr>
            <th>categories</th>
        </tr>
        {% for cat in color %}
        <tr>
            <td>{{cat.name}}</td>
        </tr>
        {% endfor %}
    </table>


    <table>
        <tr>
            <th>category item </th>
        </tr>

        {% for clr in color %}

        {% for itm in item %}

        <tr>
            {% if clr.name == itm.category %}

            <td>{{itm.name}}</td>
            {%endif%}

        </tr>
        {% endfor %}
        {% endfor %}
    </table>

{% endblock %}

错误 / color / colorlist的IntegrityError 外键约束失败

1 个答案:

答案 0 :(得分:0)

我还没有读完所有代码-有很多不相关的内容-但是我注意到了一些错误:

  • 定义ListItems模型,为字段item_cat定义默认值没有意义,它将尝试将实例与ID为{的ColorCat实例链接{1}}可能不存在
0
  • 保存item_cat = models.ForeignKey(ColorCat, on_delete=models.CASCADE, null=True, blank=True) -使用new_list实例代替其ColorCat
id