2017-02-20 2 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), 
    ), 
] 

Вывод Migrate

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, который я сомневаюсь, что когда-нибудь работать, просто изменить это, чтобы иметь лучшее значение по умолчанию для поля полукокса

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

Поскольку большинство FileField объектов у Вас есть образы, ImageField Джанго был бы лучшим вариантом, чем FileField. Проверьте docs