Отношение, созданное для вычисляемого поля

#django #django-models

#django #django-модели

Вопрос:

Давайте предположим, что у меня есть модели.py вот так:

 class Employee(models.Model):
    name = char...
    code = int...
    email = email...
    evaluations = fk(Evaluation) <-----

class Evaluation(models.Model):
    date = date...
    points = int...
    emp_code = char... <-----
  

Возможно ли создать отношение на основе вычисляемого поля?

Я имею в виду, что в БД я не могу сохранить emp_code from Evaluation в виде обычного текста, поэтому у меня есть функция для скрытия кода, но я не знаю, как создать связь на основе функции.

Редактировать 1: Чтобы прояснить некоторые вопросы: сотрудник.код может быть первичным ключом, поскольку это уникальное поле. emp_code ДОЛЖЕН быть хэширован. я НЕ МОГУ сохранить его в виде обычного текста.

мне не нужны employee.оценки, подобные полю, это может быть какая-то функция или что-то еще, что производит сравнение на основе обработанного атрибута

Давайте предположим, что у меня есть employee.code = 1234, после хэширования оно получается как ‘abcdef’, я хотел бы получить объект employee с code = 1234 и всеми оценками для emp_code = ‘abcdef’

Комментарии:

1. Это совсем не ясно. Внешние ключи указывают на первичный ключ вычисления, а не на emp_code. (Но также не ясно, почему вы не можете сохранить emp_code.)

2. Похоже, вам вообще не нужно evaluations поле. Достаточно иметь внешний ключ от Evaluation до Employee . Здесь вы можете найти больше о связях .

3. Какое поле является первичным ключом Employee ? Это то, на что вы должны ссылаться из Evaluation

4. @DanielRoseman это был всего лишь пример, но то, что я хочу сохранить, — это своего рода конфиденциальные данные, которые не должен видеть даже администратор базы данных…

5. @ceterre — Если вы хотите скрыть конфиденциальные данные, зашифруйте их. Не запутывайте связь с базой данных, это только вызовет у вас проблемы позже.