2017-12-05 6 views
1

現在、Eric MatthesのPython Crash Courseという書籍からいくつかのプロジェクトを行っています。現在、私は自分のコードの一部を変更しながらDjangoプロジェクトを作成するのに以前のコードを使用する必要があるが、問題に遭遇したラボ19.1を行っています。Djangoのon_deleteエラー

from django.db import models 

class Topic(models.Model): 
    """A topic the user is learning about.""" 
    text = models.CharField(max_length=200) 
    date_added = models.DateTimeField(auto_now_add=True) 

    def __str__(self): 
     """Return a string representation of the model.""" 
     return self.text 

class Entry(models.Model): 
    """Something specific learned about a topic.""" 
    topic = models.ForeignKey(Topic) 
    text = models.TextField() 
    date_added = models.DateTimeField(auto_now_add=True) 

    class Meta: 
     verbose_name_plural = 'entries' 

    def __str__(self): 
     """Return a string representation of the model.""" 
     return self.text[:50] + "..." 

と私の現在のコード:

私はお返しに

>>>python manage.py makemigration blogs 

このコマンドを実行したい たびに、私はこのコード

TypeError: init() missing 1 required positional argument: 'on_delete'

彼の元models.pyコードを取得します

from django.db import models 

# Create your models here. 

class BlogPost(models.Model): 
    title = models.CharField(max_length=200) 
    text = models.CharField(max_length=200) 
    date_added = models.DateTimeField(auto_now_add=True) 

    def __str__(self): 
     """Return a string representation of the model.""" 
     return self.text 

class Post(models.Model): 
    """SThe post""" 
    topic = models.ForeignKey(BlogPost) 
    text = models.TextField() 
    date_added = models.DateTimeField(auto_now_add=True) 

    class Meta: 
     verbose_name_plural = 'posts' 

    def __str__(self): 
     if len(self.text) >= 50: 
      """Return a string represerntation of the model""" 
      return self.text[:50] + "..." 
     else: 
      return self.text 

私は正直なところ、このエラーコードが出ているのか分かりません。私は何かを混乱させるかどうかを確認しましたが、何も見つかりません。知っている人がいますか?

答えて

1

Django 2.x以来、on_deleteが必要です。これは、Djangoの2.0 relaseノートからです:

The on_delete argument for ForeignKey and OneToOneField is now required in models and migrations. Consider squashing migrations so that you have fewer of them to update.

そのため、エラーがこの行から来ている:あなたはon_delete財産を設けることなく、外部キー関係を作成している

topic = models.ForeignKey(BlogPost) 

。だから、リンクをたどって、あなたのニーズに合ったものを選んでください。

+0

しかし、なぜ私は彼がしたようにすべてを入力し、私はそのエラーで私をもたらすモデル名を変更することを決めたときに動作しました – CholoBoy

+0

どのようなDjangoのバージョンを使用していますか? – scharette

+0

私は1.11.7を使用していましたので、アップデートをリリースしたと思います – CholoBoy

関連する問題