使用to_field选项建立外键时的AttributeError

时间:2015-06-09 16:58:53

标签: python django django-models

我正在尝试在具有特定字段的两个模型之间建立外键关系。

建立与ID字段的关系可以正常工作,但是当我使用to_field选项时,我收到错误:

AttributeError: type object 'WorldEaseConsignee' has no attribute 'order_number'

示例代码:

class WorldEaseConsignee(models.Model):

    order_number = models.IntegerField(
        null=False,
        blank=False,
        default=0,
    )


class WorldEaseInvoice(models.Model):      

    order_number_id = models.ForeignKey(
        WorldEaseConsignee,
        to_field=WorldEaseConsignee.order_number,
    )

1 个答案:

答案 0 :(得分:1)

来自docs:

  

关系所涉及的相关对象上的字段。默认情况下,Django使用相关对象的主键。

我们知道PK是独一无二的。尝试在order_number模型中将unique设置为WorldEaseConsignee

class WorldEaseConsignee(models.Model):
    order_number = models.IntegerField(
        null=False,
        blank=False,
        unique=True
    )

另外,设置to_field值如下:

class WorldEaseInvoice(models.Model):
        order_number_id = models.ForeignKey(
            WorldEaseConsignee,
            to_field='order_number',
        )