从django模型访问除外键之外的变量?

时间:2013-09-18 14:54:38

标签: django django-models autocomplete django-crispy-forms

我有一个名为“产品”的类模型,它具有以下特征:ID,数字和类型enter image description here

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”的链接。

enter image description here

class Project(models.Model):
    number = models.CharField(max_length=50)
    product = models.ForeignKey(Product)

这就是它变得棘手的地方:我使用脆弱的形式&自动完成以显示和编辑值。自动完成基于项目模型的值。因此,为了显示和编辑产品的类型适当性,我需要在我的项目模型中添加适当的类型

enter image description here

问题:

  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
    
  3. 修改:我只需要能够以任何可能的方式访问Project中的产品类型。

2 个答案:

答案 0 :(得分:0)

我很难理解你想要完成的事情。但是,您无法遍历对象,但

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

应该运作良好。当ProductProjectProject时,在ForeignKeyProduct中输入内容似乎有点过分。

编辑:

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

的东西
return Products.objects.get(type=id_product)

答案 1 :(得分:0)

  

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

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

<my-project-instance>.product.type

访问项目中的产品类型。

编辑:确保您使用的是Project的实例。您正在使用班级名称时,以下评论失败。