首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法分配"0.0":"Item.discount“必须是"Discount”实例

无法分配"0.0":"Item.discount“必须是"Discount”实例
EN

Stack Overflow用户
提问于 2012-12-28 17:17:12
回答 1查看 229关注 0票数 0

我知道这里有一大堆类似的问题,但这是不同的,因为它看起来像是一个bug。

型号:

代码语言:javascript
运行
复制
class Item(BaseModel):
    serial = AutoField(primary_key=True)
    prod = ForeignKey(Product, verbose_name='Product')
    account = ForeignKey(Account, verbose_name='Account')
    pdate = DateField(null=True, verbose_name='Date') # Paid date, for imported licenses only
    price = DecimalField(max_digits=10, decimal_places=2, default=0)
    discount = FloatField(default=0.0)
    vat = ForeignKey(Vat, null=True) # Null is for imported licenses
    disabled = BooleanField(default=False) # To activate/deactivate license

class Discount(BaseModel):
    ID = AutoField(primary_key=True)
    name = CharField(max_length=32)
    rate = FloatField(verbose_name='Rate (%)', help_text=get_help('discount__rate'))
    disabled = BooleanField(default=False)
    def __unicode__(self):
        return u'%s, %s%'%(self.name, self.rate)

表格:

代码语言:javascript
运行
复制
class InvAddProdForm(ModelForm):
    qty = IntegerField(initial=1)
    class Meta:
        model = Item
        fields = ('prod','account','discount','vat')
    def __init__(self, *args, **kwargs):
        super(InvAddProdForm, self).__init__(*args, **kwargs)
        self.fields['prod'].empty_label = None
        self.fields['prod'].queryset = Product.objects.filter(disabled=False).order_by('name')
        self.fields['account'].empty_label = None
        self.fields['vat'].empty_label = 'AUTO'
        self.fields['vat'].required = False
        self.fields['vat'].queryset = Vat.objects.filter(disabled=False).order_by('name')

正如您所看到的,类Discount存在,但是Item从不使用它,并且当我尝试创建InvAddProdForm的实例时,仍然会得到异常

代码语言:javascript
运行
复制
ValueError at /invoice/10000/
Cannot assign "0.0": "Item.discount" must be a "Discount" instance.

有人能理解这一点吗?我觉得这很奇怪。如果Item中的discount字段是ForeignKey字段,它对我来说是有意义的,但它不是。!它是一个FloatField

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 18:24:18

discount = FloatField(default=0.0)

应该是

discount = ForeignKey(Discount)

更新

好吧,那么可能发生的情况是,您的models.py与数据库模式的外观不同步。大概,您已经将其从外键更改为浮点型字段。因此,您还需要在db中更改此设置。有两种方法可以做到这一点:

使用South删除表并再次运行

附注:您可能应该将discount存储为十进制字段

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14067207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档