ValueError: недопустимый литерал для int () с основанием 10: «категория» - PullRequest
0 голосов
/ 25 июня 2019

Я использую Python 3.7 Джанго 2,2 рамки отдыха django 3.9.4

После запуска:

python manage.py migrate

Появляется ошибка:

ValueError: недопустимый литерал для int () с основанием 10: «категория»

Это моя модель:

class Category(models.Model):
    name = models.CharField(max_length=40, default='', verbose_name="类别名", help_text="类别名")  # 分类名

    class Meta:
        verbose_name = "分类"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class Article(models.Model):
     ...code...
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="cate", blank=True, verbose_name='分类',
                                 default='')
    ...code...

    class Meta:
        ordering = ['-add_time']
        verbose_name = "新闻"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.title  # 在后台中以文章标题显示

Это мои serizalizers.py

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = "__all__"

class ArticleSerializer(serializers.ModelSerializer):
    # 外键相关对象
    tag = TagSerializer(many=True)
    category = CategorySerializer()

    class Meta:
        model = Article
        fields = "__all__"

Любой друг может помочь?

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Я думаю, что ошибка в том, что вы определяете значение по умолчанию для внешнего ключа категории как '', когда оно должно быть None. Также вы должны установить null = True вместо blank = True.

class Article(models.Model):
    ...code...
    category = models.ForeignKey(
        Category,
        on_delete=models.CASCADE, 
        related_name="cate",
        null=True,                # change here
        verbose_name='分类',
        default=None              # and here
   )
   ...code...
0 голосов
/ 25 июня 2019

Удалите миграции и снова запустите миграцию.

...