FileField Model上models.py中的Django 3无效语法



我得到了无效的语法(,第15行(pylint(语法错误([15,6],这使我无法进行迁移。在我添加之前正在工作的几个字段之前正在工作。

它以前是有效的。

我添加了模型类的选择,使用命名组来对陨石进行分组,而不是继承类,人们说这会导致我读到的问题。可以在里面找到任何可能导致它的东西,但仍然有可能。

我试着删除并重新格式化它,看看缩进是否无效。这通常会为我解决问题。

我也尝试了这个stackerflow结果将ImageField添加到模型中会导致django 中的异常

但我已经安装了枕头,unicode部分并没有什么不同。

我还检查了一下[我的括号是否平衡][1],我相信它们是平衡的,但这是一个叠加的结果。。我在所有内容中都添加了默认值,这样上次就可以进行迁移了,我进行了迁移并添加了一个示例。


default='')

它说这条线低于

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

博客/模型.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

您错过了),就这么简单:

CATEGORY_CHOICES = (
('iron meteorites', 'iron meteorites'),
('stony meteorites', 'stony meteorites'),
('stony-iron meteorites', (
('pallasite', 'pallasite'),
('mesosiderites', 'mesosiderites'),
),
),
)

我认为('pallasite', 'pallasite')所在的CATEGORY_CHOICES变量有一个括号太多了。或者您错过了关闭这个括号。。。

我发现我需要更改这个

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_StHOOL_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,
)

最新更新