在虚拟环境处于活动状态时,我已经在Anaconda cmd界面中使用pip安装了django-composite-foreignkey。
当我像这样使用CompositeForeignKey时:
PersOrg = CompositeForeignKey(Organisation, on_delete=CASCADE, to_fields={'ClientId', 'OrgCode'})
我收到错误消息:NameError:未定义名称'CompositeForeignKey'
我尝试过:
import django-composite-foreignkey
但收到错误:import django-composite-foreignkey ^ SyntaxError:语法无效。
如何使模型知道CompositeForeignKey的存在?还是有更好的方法来引用多字段外键。
我有一个数据库,多个客户端将在该数据库中进行注册,例如定义自己在组织中工作的员工。
通常,模型将具有以下定义:
class Person(models.Model):
ClientId = models.ForeignKey('clients.Client', on_delete=models.CASCADE,
to_field='id')
PersNumber = models.PositiveIntegerField(null=False)
PersSurName = models.CharField(max_length=40, null=False)
PersNames = models.CharField(max_length=40, null=False)
PersIsStaff = models.BooleanField(null=False)
PersMobile = models.CharField(max_length=13)
PersWork = models.CharField(max_length=13, blank=True)
PersEmail = models.EmailField(max_length= 80, blank=True)
PersWorkTitle = models.CharField(max_length=40)
PersOrg = CompositeForeignKey(Organisation, on_delete=CASCADE,
to_fields={'ClientId', 'OrgCode'})
class Meta:
unique_together = (('ClientId', 'PersNumber'),)
def __str__(self):
"""Return a string representation of the model"""
return str(self.PersNumber) + ' - ' + self.PersSurName + ' - ' + self.PersNames
在每个模型中,将都有一个客户端ID和一个(或多个)其他唯一字段。
如上例所示,PersOrg字段是表“ Organisation”的外键,其中“ ClientId”,“ OrgCode”字段定义了外键。
已经在此论坛上提出并回答了问题,但我无法使用CompositeForeignKey。
我们将不胜感激
此致
Phlip
答案 0 :(得分:1)
django-composite-foreignkey
是项目的名称,但是Python包的名称是compositefk
,如test app所示。因此,您的导入应为:
from compositefk.fields import CompositeForeignKey
我认为这是一个很奇怪的错误,但是看着the documentation他们实际上并没有显示导入内容,因此我认为可以说文档使您失望。
请注意,Python标识符不能包含-
,这就是语法错误的原因。