我有一个名为“产品”的类模型,它具有以下特征:ID,数字和类型。
class Product(models.Model):
PRODUCT_TYPES = (
('CW', 'Casement Window'),
('BA', 'Bunny Advance'),
('EW', 'Enterprise Wadoo'),
('T3', 'Type 3')
)
number = models.CharField(max_length=50)
type = models.CharField(max_length = 2 , choices=PRODUCT_TYPES)
我有一个名为“Project”的类模型,它具有以下属性:ID,数字和product_id指向“Product”的链接。
class Project(models.Model):
number = models.CharField(max_length=50)
product = models.ForeignKey(Product)
这就是它变得棘手的地方:我使用脆弱的形式&自动完成以显示和编辑值。自动完成基于项目模型的值。因此,为了显示和编辑产品的类型适当性,我需要在我的项目模型中添加适当的类型。
问题:
是否可以将models.ForeignKey用于普通字段?如:
type = models.ForeignKey(Product,related_name='type')
我尝试使用循环迭代每个产品并比较ID,但我得到以下消息:“'ModelBase'对象不可迭代”
def test(id_product):
for p in Product:
if p.number == id_product:
return p.type
修改:我只需要能够以任何可能的方式访问Project中的产品类型。
答案 0 :(得分:0)
我很难理解你想要完成的事情。但是,您无法遍历对象,但
for p in Products.objects.all():
....
应该运作良好。当Product
有Project
到Project
时,在ForeignKey
和Product
中输入内容似乎有点过分。
编辑:
仍然没有意义,但你的测试方法应该产生类似
的东西return Products.objects.get(type=id_product)
答案 1 :(得分:0)
编辑:我只需要能够访问其中的产品类型 以任何可能的方式进行项目。
我也不确定问题到底是什么,你不能正常访问它:
<my-project-instance>.product.type
访问项目中的产品类型。
编辑:确保您使用的是Project的实例。您正在使用班级名称时,以下评论失败。