Джанго Установить формулу для поля - PullRequest
0 голосов
/ 25 июня 2018

Я хочу установить ручную арифметическую формулу поля в модели, формула изменяется от объекта к объекту модели и задается каким-либо суперпользователем и устанавливает ее в зависимости от внешнего имени модели.

class Strategy(models.Model):
 name = models.CharField(max_length=30, unique=True)

class Line(models.Model):
 strategy = models.ForeignKey(Strategy,on_delete=models.CASCADE)
 startvalue = models.FloatField(default=0)
 endvalue = models.FloatField(null=True,blank=True)
 target = models.FloatField(default=0)
 alpha = models.FloatField(default=0)

Итак, здесь будет много стратегий, и для каждой стратегии я хочу, чтобы суперпользователь отобразил арифметическую формулу для альфы с точки зрения начального значения, конечного значения, цели, будет много стратегий и, следовательно, много формул для альфы

например, если стратегия

s1, тогда альфа = 100 * (начальное значение + конечное значение * цель)

s2, затем alpha = startvalue-endvalue * target

Таким образом, суперпользователь должен установить формулу альфа для стратегии через GUI , чтобы все Линии с этой стратегией имели эту формулу для альфы.

Как это реализовать? Пожалуйста, помогите мне, я застрял здесь более двух дней.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Ознакомьтесь с моим ответом на Django установил ручную арифметическую формулу для поля

Вам потребуется создать мету формулы и иметь свойства для ее выполнения во время выполнения.

import operator
operator_map = {"+": operator.add, "-":operator.sub...}
class ModelB:
    _operator <- while will store a raw operator
    @property
    def operator(self):
        return operator_map[self._operator]
0 голосов
/ 25 июня 2018

Вы можете добавить пользовательскую форму для ModelAdmin: https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form

Затем переопределите метод clean в форме для проверки поля стратегии и установите альфа:

https://docs.djangoproject.com/en/2.0/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other

...