0
我试图让产品的库存系统像轮胎/管。django unique_together与三个字段 - 意外的“已存在”错误
卡车尼龙,吉普尼龙,吉普径向,汽车尼龙,汽车径向等类别很多,每个类别下都会有很多规格名称的产品,如825.20.16,900.20.14,135/70R12等等。
对于每个规格,都会有不同的制造商。径向型轮胎下的一些规格可能有两种变型管式轮胎&无内胎轮胎。
这是我的模型。
class Category(MPTTModel):
name=models.CharField(max_length=75,null=False,blank=False, unique=True)
parent=TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
def __str__(self):
return self.name
PRODUCT_TYPE=(('TL','Tubeless Tyre'), ('TT','Tubed Tyre'), ('NA','Not applicable'))
class Product(models.Model):
name = models.CharField(max_length=30,null=False, blank=False)
category=TreeForeignKey(Category, null=False,blank=False)
def __str__(self):
return '%s = %s' % (self.name,self.category.name)
class Meta:
ordering=['category']
**unique_together = ('name', 'category')**
class ProductStock(models.Model):
product=models.ForeignKey(Product,null=False,blank=False)
manufacturer=models.OneToOneField(Manufacturer, null=False,blank=False)
product_type=models.CharField(max_length=2, choices=PRODUCT_TYPE,)
opening_stock=models.PositiveIntegerField(default=0)
def __str__(self):
return '%s (%s) stock = %d ' % (self.product, self.manufacturer, self.opening_stock)
class Meta:
ordering=['manufacturer']
**unique_together = ('product', 'manufacturer','product_type')**
请参阅最后一个unique_together。我需要确保任何制造商在任何规格下都不会有任何重复的Tubeless或Tubed-tire。
我已添加如下所示的股票。
> Car Radials => 135/70R12
> Manufacturer: CEAT
> Type: Tubeless Opening
> stock: 5
现在,当我尝试输入带套轮胎型库存对于上述一组参数,(汽车子午线轮胎=> 135/70R12,制造商:CEAT,类型:带套轮胎,股票:5)我得到以下错误。
该产品,制造商和产品类型的产品库存已经存在。
product_stock表中只有一个条目。
我无法弄清楚这里出了什么问题。任何帮助将不胜感激。
感谢
PS:有使用代码标记了一些麻烦 - 对不起。
如果你的'manufacturer'字段是'OneToOne',那么我的想法是,你只能有那些'ProductStock'之一。 –
请显示您用于创建该项目的确切代码。正如马特所说,制造商当然应该是一个ForeignKey,而不是OneToOneField,尽管这不会导致你的错误。 –