我正在尝试更好地了解姜戈是如何工作的。使用下面的测试函数创建
类别、标签和项目
代表
MacBook Pro
然后添加一个
MacBook Pro
到那个类别、标签和项目(产品)。
相关型号:
(注意,我正在进行故障排除,模型可能无法准确表示问题发生时的情况)
class Tag(models.Model):
title = models.CharField(max_length=20)
def __str__(self):
return self.title
class Item(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=100)
manufacturer = models.ForeignKey('Manufacturer', blank=True, null=True, on_delete=models.SET_NULL)
introduction = models.DateField(auto_now=True)
quanity = models.IntegerField(default=0)
is_retired = models.BooleanField(default=False)
tags = models.ManyToManyField(Tag)
def __str__(self):
return self.name
def add(self):
pass
def remove(self):
pass
def retire(self): # Rex came up with this, roll credits.
pass
def count(self):
pass
class OnHand(models.Model):
name = models.CharField(max_length=100)
serial = models.CharField(max_length=80)
asset = models.CharField(max_length=20)
product = models.ForeignKey(Item, blank=True, null=True, on_delete=models.CASCADE)
def __str__(self):
return self.serial
测试用例:
def make_macbook():
""" Create a Manufacturer for Apple """
apple = Manufacturer(name='Apple', rep_name='Jason Wilburn', support_number='1-800-Apple')
apple.save()
print('Manufacturer name: {}'.format(apple))
""" Create a Category for Laptops """
laptop = Category(name='Laptops')
laptop.save()
print('Category name: {}'.format(laptop))
""" Create a Tag for Mac """
mac = Tag(title='mac')
mac.save()
print('Tag name: {}'.format(mac))
""" Create a MacBook Item """
macbook = Item(name='Macbook Pro', description='15.5" Macbook Pro, 2018 Model', manufacturer=apple)
macbook.save()
print('Item name: {}'.format(macbook))
""" Create a MacBook OnHand item """
newMac = OnHand(name='MacBook Pro 15.5"', serial='SC02XP0NRJGH5', asset='DEPSC02XP0NRJGH5', product=macbook)
newMac.save()
return newMac.product
我现在测试的是添加新的
手头
对象到
类别、标签和项目
.
以下是我的资料:
def add_macbook():
""" Find MacBook Item """
macbook = Item.objects.filter(name='Macbook Pro')
""" Create a MacBook OnHand item """
newMac = OnHand(name='MacBook Pro 15.5"', serial='000000000000000', asset='DEP0000000000000', product=macbook)
newMac.save()
我面临两个问题:
-
类“item”没有“objects”成员
-
ValueError:无法分配“]>”:“OnHand.Product”必须是“item”实例。
我怎样才能得到现有的
项目
要关联的实例?
我也尝试过:
def add_macbook():
""" Find MacBook Item """
macbook = Item.objects.get(name='Macbook Pro')
""" Create a MacBook OnHand item """
newMac = OnHand(name='MacBook Pro 15.5"', serial='000000000000000', asset='DEP0000000000000')
newMac.save()
macbook.product.add(newMac)
这给了我明显的
“item”没有“product”属性
因为显然没有。我试过这个是因为
Tag
模型作品。