Django 3 недопустимый синтаксис в models.py в модели FileField - PullRequest
0 голосов
/ 09 мая 2020

Я получаю недопустимый синтаксис (, строка 15) pylint (syntax-error) [15,6], что не позволяет мне выполнить миграцию. Работал до того, как добавил несколько полей, над которыми одно работало раньше.

Это работало раньше.

Я добавил варианты классов модели, используя именованные группы для группировки метеоритов вместо унаследованных классов, которые, как говорят, вызывают проблемы с тем, что я читаю. Мог найти в нем что-нибудь, что могло бы вызвать это, но все еще есть возможность.

Я попытался удалить и переформатировать его, чтобы проверить, нет ли отступов, ничего не работает. Обычно это решает проблемы для меня.

Я также пробовал этот результат stackoverflow Добавление ImageField в модель вызывает исключение в django

Но у меня уже установлена ​​подушка и юникод часть не имеет значения.

Я также проверил, сбалансированы ли [мои скобки] [1], как я полагаю, но это результат переполнения стека. . Я добавил значение по умолчанию ко всему, чтобы я мог сделать миграции в прошлый раз, когда это сработало, и я сделал миграции и добавил пример.


default='')

он говорит, что это строка ниже

    main_image=models.FileField(upload_to='media/', default='')

блог / models.py

    from django.db import models
    from django.utils import timezone


    class Post(models.Model):
        CATEGORY_CHOICES = (
        ('iron meteorites', 'iron meteorites'),
        ('stony meteorites', 'stony meteorites'),
        ('stony-iron meteorites', (
            ('pallasite', 'pallasite'),
            ('mesosiderites', 'mesosiderites'),
            ),
        )

        main_image=models.FileField(upload_to='media/', default='')
        second_image=models.FileField(upload_to='media/', default='')
        arthor=models.CharField(max_length=256, default='')
        title=models.CharField(max_length=256, default='')
        description=models.TextField(default='')
        more_info=models.TextField(default='')
        l_heading=models.CharField(max_length=256, default='')
        l_heading_text=models.CharField(max_length=256, default='')
        qoute=models.CharField(max_length=256, default='')
        qoute_name=models.CharField(max_length=256, default='')
        s_heading=models.CharField(max_length=256, default='')
        s_heading_text=models.CharField(max_length=256, default='')
        category=models.CharField(
            max_length=256, choices=CATEGORY_CHOICES, default='')
        created_date=models.DateTimeField(default='')
        text=models.TextField(default='')
        tag_1=models.CharField(max_length=256, default='')
        tag_2=models.CharField(max_length=256, default='')
        tag_3=models.CharField(max_length=256, default='')

        class Meta:
            ordering=['-created_date']
        def __str__(self):
            return self.title


  [1]: https://stackoverflow.com/questions/13565099/django-invalid-syntax-error

Ответы [ 3 ]

1 голос
/ 09 мая 2020

Вы пропустили ), Все просто:

CATEGORY_CHOICES = (
    ('iron meteorites', 'iron meteorites'),
    ('stony meteorites', 'stony meteorites'),
    ('stony-iron meteorites', (
        ('pallasite', 'pallasite'),
        ('mesosiderites', 'mesosiderites'),
        ),
    ),
)
0 голосов
/ 09 мая 2020

Я думаю, что для переменной CATEGORY_CHOICES, где ('pallasite', 'pallasite'), слишком много скобок. Или вы пропустили эту круглую скобку ...

0 голосов
/ 09 мая 2020

Я обнаружил, что мне нужно изменить это

  class Post(models.Model):
        CATEGORY_CHOICES = (
        ('iron meteorites', 'iron meteorites'),
        ('stony meteorites', 'stony meteorites'),
        ('stony-iron meteorites', (
            ('pallasite', 'pallasite'),
            ('mesosiderites', 'mesosiderites'),
            ),
        )

на это

class Post(models.Model):
    CATEGORY_CHOICES = [
    ('iron meteorites', 'iron meteorites'),
    ('stony meteorites', 'stony meteorites'),
    ('stony-iron meteorites', (
        ('pallasite', 'pallasite'),
        ('mesosiderites', 'mesosiderites'),
        ),
    ),
    ]

Я также добавлю значение по умолчанию для категории.

 category=models.CharField(
        max_length=256, choices=CATEGORY_CHOICES, default='stony meteorites')

Я заметил, что они сделали это в документах, используя YEAR_IN_SCHOOL_CHOICES = [для запуска вместо YEAR_IN_SCHOOL_CHOICES = (

YEAR_IN_SCHOOL_CHOICES = [
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
        (GRADUATE, 'Graduate'),
    ]
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )
...