0

我有一个名为“Product”的类模型,它具有以下属性: ID、number 和type在此处输入图像描述

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)

这就是它变得棘手的地方:我使用清晰的表单和自动完成来显示和编辑值。自动完成基于项目模型的值。因此,为了显示和编辑产品的类型专有性,我需要在我的项目模型中添加专有类型

在此处输入图像描述

问题:

  1. 是否可以将 models.ForeignKey 用于普通字段?如 :

    type = models.ForeignKey(Product,related_name='type')

  2. 我尝试使用循环迭代每个产品并比较 ID,但我收到以下消息:“ 'ModelBase' 对象不可迭代

    def test(id_product):
       for p in Product:
           if p.number == id_product:
               return p.type
    

编辑:我只需要能够以任何可能的方式访问项目中的产品类型。

4

2 回答 2

0

我很难理解您要完成的工作。但是,您不能循环遍历对象,但是

for p in Products.objects.all():
    ....

应该工作得很好。同时输入ProductProject何时Project输入ForeignKey似乎Product有点太多了。

编辑:

仍然没有意义,但你的测试方法应该产生类似

return Products.objects.get(type=id_product)
于 2013-09-18T15:26:53.457 回答
0

编辑:我只需要能够以任何可能的方式访问项目中的产品类型。

我也不确定到底是什么问题,你不能正常访问它:

<my-project-instance>.product.type

访问项目中的产品类型。

编辑:确保您使用的是 Project 的实例。由于您使用的是班级名称,因此您在下面的评论失败了。

于 2013-09-18T16:09:39.277 回答