Как сделать поле в django модели, которое является либо значением, либо внешним ключом? - PullRequest
2 голосов
/ 07 марта 2020

Я не знаю, возможно ли это, возможно, мне нужно придумать конкретный дизайн, но я борюсь со следующим:

Это мои модели


class Rectangle(models.Model):
    height = models.CharField(max_length=255)
    width = models.CharField(max_length=255)

class Variable(models.Model):
    name = models.CharField(max_length=255)
    value = models.CharField(max_length=255)

Я хотел бы, чтобы ширина и высота были либо значением, либо переменной со значением. Например, если пользователь вводит высоту, начинающуюся со специального символа, скажем «@variablename», он должен иметь возможность найти и ссылаться на переменную, в противном случае просто сохраните значение, если для ввода было, например, «350».

Кто-нибудь может мне помочь? Заранее спасибо

1 Ответ

1 голос
/ 07 марта 2020

Вы можете установить отношение с моделью Vairable для полей высоты и ширины.

class Rectangle(models.Model):
    height = models.Foreignkey(Variable,on_delete=#SET_NULL,CASCADE vs what you want)
    width = models.Foreignkey(Variable,on_delete=#SET_NULL,CASCADE vs what you want)

Если пользователь дает специальное имя значения, вы можете найти и связать свое поле с объектом Variable. Другие, если пользователь указывает только значение, вы можете создать любой объект Variable и подключить его к связанному полю.

...