TypeError:调用元类库序列项2时出错:期望的字符串或Unicode,找到int

时间:2013-05-20 02:29:18

标签: django django-models

我有以下models.py

from django.db import models
import datetime

class Build(models.Model):
    build_name = models.CharField(max_length=60)
    description = models.CharField(max_length=140)
    parts = models.ManyToManyField('Part')

    def __unicode__(self):
        return self.build_name

class Part(models.Model):
    name = models.CharField(max_length=70)
    cost_usd = models.DecimalField(5, 2)
    type_of = models.CharField(max_length=5)
    supported_builds = models.ManyToManyField(Build)

    def __unicode__(self):
         return self.name

class OrderBuild(models.Model):
    parent = models.ForeignKey(Build)
    custom_parts = models.ManyToManyField(Part)

class PriceCache(models.Model):
    price = models.DecimalField(4, 2)
    time_fetched = models.DateTimeField(default=datetime.datetime.now())

我已经尝试逐一评论每一行并重新运行,并且没有一行似乎会导致此错误。它成功同步的唯一一次是我在模型类中评论了所有内容。

有谁知道造成这个错误的原因,以及我如何修复它?

1 个答案:

答案 0 :(得分:4)

检查线

cost_usd = models.DecimalField(5, 2)
# ...
price = models.DecimalField(4, 2)

将其修改为

cost_usd = models.DecimalField(max_digits=5, decimal_places=2)
# ...
price = models.DecimalField(max_digits=4, decimal_places=2)

模型字段的签名就像

field(verbose_name=None, name=None, ...)
DecimalField(verbose_name=None, name=None, max_digits=None, decimal_places=None, **kwargs)

因此,您的代码将verbose_namename字段错误地设置为整数。