J'ai deux classes dans ma base de données sqlite, une table parent nommée Categorie
et la table enfant appelée Article
. J'ai d'abord créé la classe de table enfant et ajouté des entrées. Alors d'abord j'ai eu ça :
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
Et après je ont ajouté la table parent, et maintenant mon models.py
ressemble à ceci :
from django.db import models # Créez vos modèles ici. 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
Ainsi, lorsque je lance python manage.py makemigrations <my_app_name>
, j'obtiens cette erreur :
Traceback (appel le plus récent en dernier) : Fichier "manage.py", ligne 15, dans <module> execute_from_command_line(sys.argv) Fichier "C:UserslislisAppDataLocalProgramsPythonPython35-32libsite-packagesdjango-2.0-py3.5.eggdjangocoremanagement\__init__.py", ligne 354, dans execute_from_command_line utility.execute() Fichier "C:UserslislisAppDataLocalProgramsPython35-32libsite-packagesdjango-2.0 -py3.5.eggdjangocoremanagement\__init__.py", ligne 330, dans execute django.setup() Fichier "C:UserslisAppDataLocalProgramsPythonPython35-32libsite-packagesdjango-2.0-py3.5.eggdjango\__init__.py", ligne 24, dans setup apps.populate(settings.INSTALLED_APPS) Fichier "C:UserslislisAppDataLocalProgramsPython35-32libsite-packagesdjango-2.0-py3.5.eggdjangoapps egistry.py", ligne 112, dans populate app_config.import_models() Fichier "C:UserslislisAppDataLocalProgramsPythonPython35-32libsite-packagesdjango- 2.0-py3.5.eggdjangoappsconfig.py", ligne 198, dans import_models self.models_module = import_module(models_module_name) File "C:UserslislisAppDataLocalProgramsPythonPython35-32libimportlib\__init__.py", lin e 126, dans import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", ligne 986, in _gcd_import File "<frozen importlib._bootstrap>", ligne 969, dans _find_and_load File "<frozen importlib._bootstrap>", ligne 958, dans _find_and_load_unlocked File "<frozen importlib._bootstrap>", ligne 673, dans _load_unlocked File "<frozen importlib._bootstrap_external>", ligne 665, dans exec_module Fichier "<frozen importlib._bootstrap>", ligne 222, dans _call_with_frames_removed Fichier "C:UserslisDjangomon_sitelogmodels.py", ligne 6, dans <module> class Article(models.Model) : Fichier "C:UserslisDjangomon_sitelogmodels.py", ligne 16, dans Article categorie = models.ForeignKey("Categorie") TypeError : __init__() manquant 1 argument positionnel requis : "on_delete"
J"ai vu des problèmes similaires dans stackoverflow, mais il semble que ce ne soit pas le même problème : __init__() manque 1 argument positionnel requis : 'quantity'