#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 — Если вы хотите скрыть конфиденциальные данные, зашифруйте их. Не запутывайте связь с базой данных, это только вызовет у вас проблемы позже.