Я установил django-композитный-foreignkey с помощью pip в интерфейсе cmd Anaconda, когда виртуальная среда активна.
Когда я использую CompositeForeignKey, как это:
PersOrg = CompositeForeignKey(Organisation, on_delete=CASCADE, to_fields={'ClientId', 'OrgCode'})
Я получаю сообщение об ошибке: NameError: имя 'CompositeForeignKey' не определено
Я пробовал:
import django-composite-foreignkey
но получите ошибку: import django-смесь-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
В каждой модели будут идентификатор клиента и одно (или несколько) других полей, которые являются уникальными вместе.
Как и в примере выше, поле PersOrg является внешним ключом для таблицы «Organization», где поля «ClientId», «OrgCode» определяют внешний ключ.
Вопрос был задан и получен ответ на этом форуме, но я не могу заставить CompositeForeignKey работать.
Помощь будет оценена
С уважением,
Phlip