2017-09-07 169 views
0

我在models.py中創建了區域數據模型。NameError:name'Area'未定義

#coding:utf-8 
from django.db import models 
class User(models.Model): 
    name = models.CharField(max_length=200,null=True) 
    age = models.CharField(max_length=200,null=True) 
    area = models.ForeignKey(Area) 

class Area(models.Model): 
    name = models.CharField(max_length=20, verbose_name='area') 

class Prefecture(models.Model): 
    name = models.CharField(max_length=20, verbose_name='city') 
    area = models.ForeignKey(Area) 

class City(models.Model): 
    name = models.CharField(max_length=20, verbose_name='region') 
      prefecture = models.ForeignKey(Prefecture) 

class Price(models.Model): 
    name = models.CharField(max_length=20, verbose_name='price') 
      PRICE_RANGE = (
       ('a', 'under500'), 
       ('b', '500-1000'), 
       ('c', 'upper1000'), 
      ) 
    price_range = models.CharField(max_length=1, choices=PRICE_RANGE) 
    city = models.ForeignKey(City) 

當我運行遷移命令,NameError: name 'Area' is not defined area = models.ForeignKey(Area)錯誤happens.However,我定義的區域,所以我真的不明白爲什麼這個錯誤happens.How我應該解決這個問題?

回答

0

嘗試在User類之前定義Area類。事情應該沒問題。

class Area(models.Model): 
    name = models.CharField(max_length=20, verbose_name='area', null=True) 

class User(models.Model): 
    name = models.CharField(max_length=200,null=True) 
    age = models.CharField(max_length=200,null=True) 
    area = models.ForeignKey('Area') 

class Prefecture(models.Model): 
    name = models.CharField(max_length=20, verbose_name='city') 
    area = models.ForeignKey('Area') 

class City(models.Model): 
    name = models.CharField(max_length=20, verbose_name='region') 
      prefecture = models.ForeignKey('Prefecture') 

class Price(models.Model): 
    name = models.CharField(max_length=20, verbose_name='price') 
      PRICE_RANGE = (
       ('a', 'under500'), 
       ('b', '500-1000'), 
       ('c', 'upper1000'), 
      ) 
    price_range = models.CharField(max_length=1, choices=PRICE_RANGE) 
    city = models.ForeignKey('City') 
+1

或引用區域,如下所示:'area = models.ForeignKey('Area')' – slackmart

+0

@slackmart沒錯。我錯過了... – Varad

+0

@Varad thx你的答案。我寫了你的代碼,但是當我運行./manage.py makemigrations時,我得到了一個錯誤你試圖添加一個不可空的字段「區域」默認;我們不能這樣做(數據庫需要一些東西來填充現有的行)。 請選擇一個修復程序: 1)現在提供一次性默認設置(將在所有現有行上爲該列設置一個空值) 2)退出,讓我在models.py中添加一個默認值。 – user8504021