Django Model IntegrityError:NOT NULL约束失败:

Q-b*_*art 2 python django

我正在建立一个使URL简短的服务。我有以下模型:

from django.db import models

class ShortURL(models.Model):
    url = models.CharField(max_length = 50)

class LongURL(models.Model):
    name = models.CharField(max_length = 100, null=True)
    url_to_short = models.ForeignKey(ShortURL)
Run Code Online (Sandbox Code Playgroud)

我已经运行了以下命令:python manage.py migrate 如果打开解释器,请使用python manage.py shell并运行以下代码:

>>> from appshort.models import LongURL
>>> a = LongURL(name = 'hello_long_link')
>>> a.save()
Run Code Online (Sandbox Code Playgroud)

然后我得到错误:

django.db.utils.IntegrityError: NOT NULL constraint failed: appshort_longurl.url_to_short_id

我做错什么了?

wim*_*wim 5

class LongURL(models.Model):
    name = models.CharField(max_length = 100, null=True)
    url_to_short = models.ForeignKey(ShortURL)
Run Code Online (Sandbox Code Playgroud)

设置方式,url_to_short外键不是可选的。因此,当您尝试保存时:

>>> a = LongURL(name = 'hello_long_link')
>>> a.save()
Run Code Online (Sandbox Code Playgroud)

Django试图告诉您您没有url_to_shorta模型实例上提供关系。

您需要

  • 创建LongURL实例时提供ShortURL关系
  • 使用将该url_to_short关系设为可选null=True, blank=True