2017-02-20 43 views
0

我得到AttributeError:'FileField'對象沒有屬性'model'每當我運行python manage.py makemigrations和python manage.py migrate 請看下面的model.py當我跑我的最後遷移文件遷移AttributeError:'FileField'對象沒有屬性'model'

遷移:0014_slider_slider標題

class Migration(migrations.Migration): 

dependencies = [ 
    ('shops', '0013_auto_20170219_2049'), 
] 

operations = [ 
    migrations.AddField(
     model_name='slider', 
     name='Slider Title', 
     field=models.CharField(default=models.FileField(blank=True, null=True, upload_to=b''), max_length=20), 
    ), 
] 

遷移

的輸出
Operations to perform: 
Apply all migrations: admin, auth, contenttypes, sessions, shops 
Running migrations: 
Applying shops.0014_slider_slider title...Traceback (most recent call last): 
File "manage.py", line 22, in <module> 
execute_from_command_line(sys.argv) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
utility.execute() 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 359, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 294, in run_from_argv 

self.execute(*args, **cmd_options) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 345, in execute 
output = self.handle(*args, **options) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 204, in handle 
fake_initial=fake_initial, 
File "/usr/local/lib/python2.7/dist-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 "/usr/local/lib/python2.7/dist-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 "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 244, in apply_migration 
state = migration.apply(state, schema_editor) 
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/migration.py", line 129, in apply 
operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/operations/fields.py", line 84, in database_forwards 
field, 
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/schema.py", line 43, in add_field 
super(DatabaseSchemaEditor, self).add_field(model, field) 
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 395, in add_field 
definition, params = self.column_sql(model, field, include_default=True) 
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 147, in column_sql 
default_value = self.effective_default(field) 
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 221, in effective_default 
default = field.get_db_prep_save(default, self.connection) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 755, in get_db_prep_save 
prepared=False) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 747, in get_db_prep_value 
value = self.get_prep_value(value) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1081, in get_prep_value 
return self.to_python(value) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1077, in to_python 
return smart_text(value) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py", line 41, in smart_text 
return force_text(s, encoding, strings_only, errors) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py", line 78, in force_text 
s = six.text_type(s) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 188, in __str__ 
model = self.model 
AttributeError: 'FileField' object has no attribute 'model' 

models.py

from __future__ import unicode_literals 
from django.db import models 


#Create your models here. 

class Slider(models.Model): 
    slider = models.FileField() 
    slider_title = models.CharField(max_length=20) 
    def __str__(self): 
     return self.slider_title 


class ShopCategories(models.Model): 
    category = models.CharField(max_length=50, unique=True) 
    def __str__(self): 
     return self.category 


class NewShop(models.Model): 
    category = models.ForeignKey(ShopCategories) 
    main_image = models.FileField() 
    name = models.CharField(max_length=100, unique=True) 
    tagline = models.CharField(max_length=50, default='Enter tagline here2') 
    description = models.TextField(default='enter shop description') 
    shop_image = models.FileField() 
    def __str__(self): 
     return self.name 
+1

它看起來更好默認喜歡你的問題將在一個遷移文件,而不是你的模型(請包括運行遷移時最後引用的遷移文件) – Sayse

+0

@Sayse ..請現在看看 –

+1

您可以包括堆棧跟蹤和輸出正在遷移? – Sayse

回答

0

對於您所指定的其他字段類型,作爲一個charfield默認我懷疑是不可能獲得成功的一些原因,只是將其更改爲有一個char場

operations = [ 
    migrations.AddField(
     model_name='slider', 
     name='Slider Title', 
     field=models.CharField(default='', max_length=20), 
    ), 
] 
0

因爲大部分的FileField對象都是圖像,所以Django的ImageField比Filefield更好。檢查docs