J'ai défini ci-dessous le modèle et obtenir
erreur: You are trying to add a non-nullable field 'user' to videodata without a default; we can't do that
models.py
class User(Model):
userID = models.IntegerField()
userName = models.CharField(max_length=40)
email = models.EmailField()
class Meta:
ordering = ['userName']
verbose_name = 'User MetaData'
verbose_name_plural = 'Users MetaData'
def __unicode__(self):
return str(self.userName)
class VideoData(Model):
video = models.CharField(max_length=40)
time = models.IntegerField()
user = models.ForeignKey(User, related_name='User')
class Meta:
verbose_name = 'User_Video MetaData'
Où je me trompe ????
Comme le dit l'erreur, votre champ utilisateur sur VideoData n'autorise pas les valeurs NULL. Vous devez donc lui attribuer un utilisateur par défaut ou autoriser les valeurs NULL. Le moyen le plus simple consiste à autoriser les valeurs NULL.
user = models.ForeignKey(User, related_name='User', null=True)
ou avoir un utilisateur par défaut
user = models.ForeignKey(User, related_name='User', default=<have your default user id here>)
J'ai rencontré le même problème avec mon OneToOneField. Et ce que j'ai fait est de supprimer tous les fichiers de migration (qui se trouvent dans le répertoire migrations
de votre application) et
python manage.py makemigrations
et
python manage.py migrate
Je ne sais pas pourquoi, mais cela a fonctionné dans mon cas. Cela ne vous fera pas mal d'essayer ce que j'ai écrit ci-dessus.
Bonne chance!
La plupart de ces types de situtions ne posent pas de problème pour ne pas ajouter de fichiers au modèle (avec makemigrations et migrate)
Mais en raison d'erreurs incorrectes dans les types de modèles et de formulaires Fields (ICI, cela était dû à une erreur de syntaxe incorrecte de la clé étrangère)
Donc, tout d’abord, reportez-vous à: https://www.djangoproject.com/
Il peut y avoir d'autres raisons aussi:
Parfois, la base de données est remplie et n'accepte que la valeur non Nullable .__ (Cette erreur est assez fréquente dans les nouvelles versions de Django
SO a également défini la condition (null == True) dans votre modèle
Voici ce que j'ai fait pour résoudre le même problème
J'espère que cela vous aidera .. Cette solution fonctionnera chaque fois que vous rencontrerez ce type d'erreur.