Я знаю, что здесь есть масса подобных вопросов, но это другое, так как похоже, что это ошибка.
Модель:
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)
Форма:
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')
Как вы можете видеть, класс Скидка существует, но Item никогда не использует его, и все же, когда я пытаюсь создать экземпляр InvAddProdForm, я получаю исключение
ValueError at /invoice/10000/
Cannot assign "0.0": "Item.discount" must be a "Discount" instance.
Может ли кто-нибудь понять это? Я нахожу это очень своеобразным. Если поле скидок в Item было поле ForeignKey, это имело бы смысл для меня, но это не так! Это FloatField