這是三個模型,在第三個模型中,我們將上述兩個模型聯系起來。#models.py
class CategoryDetail(models.Model):
categoryCode = models.BigAutoField(
primary_key=True)
categoryName = models.CharField(max_length=100)
categoryDescription = models.CharField(max_length=500)
def __str__(self):
return self.categoryName
class ProductDetail(models.Model):
productCode = models.BigAutoField(primary_key=True)
productName = models.CharField(max_length=100)
manufacturer = models.CharField(max_length=100)
def __str__(self):
return self.productName
class ProductCategoryMapping(models.Model):
productCategoryCode= models.BigAutoField(primary_key=True)
productCode= models.ManyToManyField(ProductDetail, related_name='category')
categoryCode = models.ManyToManyField(CategoryDetail)
def __str__(self):
return '%s: %s' % (self.productCategoryCode, self.categoryCode)
這是撰寫的有錯誤的測驗
def test_CategoryMapping_str(self):
product1 = ProductDetail.objects.create(productName = 'AquaTouch')
category1= CategoryDetail.objects.create(categoryName = 'Trimmer & Shaver')
categoryMapped = ProductCategoryMapping.objects.create(productCategoryCode= '1', productCode= product1.productCode, categoryCode= category1.categoryCode)
self.assertEqual(str(categoryMapped), '1:Trimmer & Shaver ')
錯誤訊息說:“禁止直接分配到多對多集合的前端。請改用 productCode.set()”
uj5u.com熱心網友回復:
.create正如錯誤所述,問題正在發生,因為您試圖直接在(productCode=product1.productCode和categoryCode=category1.categoryCode)中設定多對多欄位。
之后您應該使用.set():
categoryMapped = ProductCategoryMapping.objects.create(productCategoryCode= '1')
categoryMapped.productCode.set([product1])
categoryMapped.categoryCode.set([category1])
也看看檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475479.html
標籤:Python django 单元测试 django-rest-framework
上一篇:有沒有辦法通過單擊按鈕根據內容在DOM中將“div”元素重新排序為降序?
下一篇:Python&Selenium:ElementClickInterceptedException:訊息:元素點擊被攔截錯誤
