0

モデルを投稿するにはトピックに外部キーを使用しています。 makemigrationsコマンドを実行すると、インポートエラーが発生し、「Topic」という名前が定義されていないことが示されます。これの原因は何でしょうか?確かに定義されているようです。私はそれがdb内の問題ではないことをかなり除外しました。名前エラー:[モデル名]をインポートできません

class Post(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)   
    title = models.CharField(max_length=100) 
    summary = models.TextField(blank=True, null=True) 
    content = models.TextField() 
    draft = models.BooleanField(default=False) 
    details = models.CharField(blank=True, null=True, max_length=250) 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) 
    topic = models.ForeignKey(Topic, blank=True, null=True) 
    thumbnail = models.ImageField(upload_to='media', blank=True, null=True) 


    def get_absolute_url(self): 
     return reverse('posts:detail', kwargs={'pk': self.pk}) 

    def __str__(self): 
     return self.title 


class Topic(models.Model): 
    name = models.CharField(max_length=50) 
    description = models.TextField() 
    picture = models.ImageField(upload_to='media', blank=True, null=True) 
    isperson = models.BooleanField(default=False) 
    ispolicy = models.BooleanField(default=False) 
    positive = models.BooleanField(default=True) 
    percent = models.CharField(max_length=5) 

    def __str__(self): 
     return self.name 

私はこのコードに何の問題も見当たらず、モデルを認識したIDEもどちらもありませんでした。トピック

答えて

1

私はあなたのファイルのポストモデルのコードを正しくインデントしたと考えています。

解決策:ポストの上にトピックを定義してみてください。

0

まず、この

topic = models.ForeignKey(Topic, blank=True, null=True) 

は、それはあなたがまだ宣言されていないモデルへの外部キーを設定しますが、しているジャンゴを伝えます。この方法で、この

topic = models.ForeignKey('Topic', blank=True, null=True) 

する必要がありますコード内でさらに宣言してください。あなたは今それを持っているように、Djangoは、インデントフィールドがPostモデルに属していることを理解していないので

class Post(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True) 
    title = models.CharField(max_length=100) 
    summary = models.TextField(blank=True, null=True) 
    content = models.TextField() 
    draft = models.BooleanField(default=False) 
    details = models.CharField(blank=True, null=True, max_length=250) 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) 
    topic = models.ForeignKey('Topic', blank=True, null=True) 
    thumbnail = models.ImageField(upload_to='media', blank=True, null=True) 

    def get_absolute_url(self): 
     return reverse('posts:detail', kwargs={'pk': self.pk}) 

    def __str__(self): 
     return self.title 

第二に、あなたは正しくPostモデルとそのメソッドをインデントする必要があります。

関連する問題