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,儘管這不會導致你的錯誤。 –