我的sqlite数据库中有两个类,一个名为Categorie的父表和一个名为Article的子表.我首先创建了子表类并添加了条目.所以首先我有这个:

class Article(models.Model):
    titre=models.CharField(max_length=100)
    auteur=models.CharField(max_length=42)
    contenu=models.TextField(null=True)
    date=models.DateTimeField(
        auto_now_add=True,
        auto_now=False,
        verbose_name="Date de parution"
    )

    def __str__(self):
        return self.titre

在我添加了父表之后,现在我的models.py看起来像这样:

from django.db import models

# Create your models here.
class Categorie(models.Model):
    nom = models.CharField(max_length=30)

    def __str__(self):
        return self.nom


class Article(models.Model):
    titre=models.CharField(max_length=100)
    auteur=models.CharField(max_length=42)
    contenu=models.TextField(null=True)
    date=models.DateTimeField(
        auto_now_add=True,
        auto_now=False,
        verbose_name="Date de parution"
    )
    categorie = models.ForeignKey('Categorie')

    def __str__(self):
        return self.titre

所以当我运行python manage.py makemigrations <my_app_name>时,我得到这个错误:

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\lislis\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django-2.0-py3.5.egg\django\core\management\__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "C:\Users\lislis\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django-2.0-py3.5.egg\django\core\management\__init__.py", line 330, in execute
    django.setup()
  File "C:\Users\lislis\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django-2.0-py3.5.egg\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\lislis\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django-2.0-py3.5.egg\django\apps\registry.py", line 112, in populate
    app_config.import_models()
  File "C:\Users\lislis\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django-2.0-py3.5.egg\django\apps\config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\lislis\AppData\Local\Programs\Python\Python35-32\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "C:\Users\lislis\Django\mon_site\blog\models.py", line 6, in <module>
    class Article(models.Model):
  File "C:\Users\lislis\Django\mon_site\blog\models.py", line 16, in Article
    categorie = models.ForeignKey('Categorie')
TypeError: __init__() missing 1 required positional argument: 'on_delete'

I've seen some similar issues in stackoverflow, but it seems to not be the same problem: __init__() missing 1 required positional argument: 'quantity'

推荐答案

可以像这样更改类Article的属性categorie:

categorie = models.ForeignKey(
    'Categorie',
    on_delete=models.CASCADE,
)

错误应该会消失.

最终,您可能需要另一个选项来购买on_delete,请查看文档以了解更多详细信息:

https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey

编辑:

正如您在 comments 中所说的,您对on_delete没有任何特殊要求,您可以使用选项DO_NOTHING:

# ...
on_delete=models.DO_NOTHING,
# ...

Django相关问答推荐

Django模型ManyToManyField.Add不起作用

Django迁移嵌套模型时出错,不带迁移基本模型

Django:不能在子函数中返回重定向异常.第一个功能继续

是否可以在 Django 中重命名应用程序的组名?

在 python 视图中检测移动浏览器

测试 Django ModelForm 是否有实例

断开模型的信号并在 django 中重新连接

在 django 模板中遇到 user.is_authenticated 问题

Django admin:我可以定义字段顺序吗?

使用 XMLHttpRequest 提示下载文件

Django rest-auth allauth 注册,带有邮箱、名字和姓氏,没有用户名

如何在 twitter-bootstrap 模式窗口中插入 django 表单?

Django Admin:如何在同一视图中显示来自两个不同模型的字段?

更改 Django ModelChoiceField 以显示用户的全名而不是用户名

Django Rest 框架 ImageField

使用 request.user 的 Django 和中间件始终是匿名的

为整个结果集向 Django Rest Framework 结果添加额外数据

Django 中的 Python 日志(log)记录

如何使用 ModelSerializer 显示所有模型字段?

关闭 Django Rest Framework ModelViewSet 的自动分页