为什么Unique在一起并不能阻止非唯一值?

时间:2016-07-23 16:09:29

标签: django

在我的模型中,2个字段(公司,AM)的组合应该是唯一的

class Vendor_AM(models.Model):
    version = IntegerVersionField( )
    company = models.ForeignKey(V_Company, on_delete=models.PROTECT)
    AM = models.ForeignKey(AM, on_delete=models.PROTECT)
    recomendedprice = MoneyField(max_digits=10, decimal_places=2, default_currency='USD')
    price = MoneyField(max_digits=10, decimal_places=2, default_currency='USD')
    is_active = models.BooleanField(default=True)
    def __unicode__(self):
        return u'%s %s %s' % ( self.id, self.AM.material.name , self.company.name )

    class Meta:
        unique_together = (("AM", "company"),)

出于这个原因,我在Meta类中定义了它。但是,而不是表单验证警告,我在保存时收到错误。可能是什么原因?

  

/ vendor / manufacture_material / new / 1 / http://127.0.0.1:8000/vendor/company/company_am_details/1//中的IntegrityError   列AM_id,company_id不是唯一的

更新: 形式:

class Vendor_AMForm(forms.ModelForm):

    class Meta:
        model = Vendor_AM
        fields = [ 'AM','recomendedprice','is_active' ]

我直接在视图中填充公司。

1 个答案:

答案 0 :(得分:1)

表单只能验证它实际包含的字段。由于您已从表单中排除company,因此无法验证公司和AM的组合。