2017-04-01 33 views
1

當我在我的文件上運行python manage.py migrate時,此ValueError顯示出來。ValueError:int()與基數10的無效文字:'NULL'

Operations to perform: 
    Apply all migrations: admin, auth, cms, contenttypes, sessions 
Running migrations: 
    Applying cms.0002_auto_20170401_2307...Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Users\sndys\project\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "C:\Users\sndys\project\lib\site-packages\django\core\management\__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Users\sndys\project\lib\site-packages\django\core\management\base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "C:\Users\sndys\project\lib\site-packages\django\core\management\base.py", line 345, in execute 
    output = self.handle(*args, **options) 
    File "C:\Users\sndys\project\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle 
    fake_initial=fake_initial, 
    File "C:\Users\sndys\project\lib\site-packages\django\db\migrations\executor.py", line 115, in migrate 
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\migrations\executor.py", line 145, in _migrate_all_forwards 
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\migrations\executor.py", line 244, in apply_migration 
    state = migration.apply(state, schema_editor) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\migrations\migration.py", line 129, in apply 
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\migrations\operations\fields.py", line 84, in database_forwards 
    field, 
    File "C:\Users\sndys\project\lib\site-packages\django\db\backends\sqlite3\schema.py", line 231, in add_field 
    self._remake_table(model, create_fields=[field]) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\backends\sqlite3\schema.py", line 113, in _remake_table 
    self.effective_default(field) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\backends\base\schema.py", line 221, in effective_default 
    default = field.get_db_prep_save(default, self.connection) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\models\fields\related.py", line 909, in get_db_prep_save 
    return self.target_field.get_db_prep_save(value, connection=connection) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\models\fields\__init__.py", line 755, in get_db_prep_save 
    prepared=False) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\models\fields\__init__.py", line 938, in get_db_prep_value 
    value = self.get_prep_value(value) 
    File "C:\Users\sndys\project\lib\site-packages\django\db\models\fields\__init__.py", line 946, in get_prep_value 
    return int(value) 
ValueError: invalid literal for int() with base 10: 'NULL' 

我的models.py文件:

from django.db import models 
from django.contrib.auth.models import User 
import markdown 

# Create your models here. 
class Tag(models.Model): 
    name = models.CharField(max_length=32) 
    slug = models.SlugField() 

    def __str__(self): 
     return self.name 

class Category(models.Model): 
    name = models.CharField(max_length=32) 
    slug = models.SlugField() 
    description = models.TextField() 
    image = models.ImageField() 

    def __str__(self): 
     return self.name 

class Image(models.Model): 
    name = models.CharField(max_length=32) 
    slug = models.SlugField() 
    alt_text = models.CharField(max_length=255) 
    image = models.ImageField() 

    def __str__(self): 
     return self.name 

class Gallery(models.Model): 
    name = models.CharField(max_length=32) 
    slug = models.SlugField() 
    images = models.ManyToManyField(Image) 
    description = models.TextField() 
    layout = models.CharField(
     max_length=5, 
     choices=(
      ('LINK', 'Linked'), 
      ('HORI', 'Horizontal'), 
      ('VERT', 'Vertical'))) 

    def __str__(self): 
     return self.name 

class Article(models.Model): 
    title = models.CharField(max_length=255) 
    slug = models.SlugField() 
    author = models.ForeignKey(User) 
    content = models.TextField() 
    creation_date = models.DateTimeField(auto_now_add=True) 
    edit_date = models.DateTimeField(auto_now=True) 
    featured_image = models.ImageField(null=True, blank=True) 
    publish_status = models.BooleanField(default=False) 
    category = models.ForeignKey(Category) 
    tags = models.ManyToManyField(Tag) 

    @property 
    def content_html(self): 
     return markdown.markdown(self.content) 
    def __str__(self): 
     return self.title 

    class Meta: 
     verbose_name_plural = 'Articles' 
     ordering = ['creation_date']`enter code here` 

當我做蟒蛇manage.py makemigrations,這表明了:

您嘗試添加不可爲空場 '類別'沒有默認的文章;我們不能這樣做(數據庫需要一些東西來填充現有的行)。 請選擇修復:

1)現在提供一次性的默認(將所有現有的行用null值來設置此列)

2)退出,並讓我在添加默認models.py中

選擇一個選項:

我選擇1,給了默認值「NULL」,我覺得這是我可能犯了這個錯誤。在這個「python manage.py makemigrations」成功運行後,但「python manage.py migrate」提供了一個錯誤。 在此之後,我試圖給文章類別中的類別外鍵默認值= 1,但同樣的錯誤發生在遷移。

誰能告訴我問題在哪裏以及如何解決。

+0

刪除您的最新遷移文件。在models.py文件中提供默認值並再次運行'python manage.py makemigrations'。 –

+0

您可以通過設置'null = True'來臨時使您的外鍵可以爲空,然後遷移併爲您的外鍵插入適當的值。然後刪除'null = True'並再次遷移。 –

回答

0

你不應該給你想要的數據庫接收的價值。你在Python中給出了這個值。但是,如果在該字段上未設置爲null = True,則只會收到該消息。刪除遷移並在該字段上設置null = True。

相關問題