如何将用户输入数据从 Django 模型中的一个字段链接到同一模型中的另一个字段?

问题描述 投票:0回答:1

如果这是一个愚蠢的问题或者我的术语不太正确,我深表歉意。我对 Django 和编程非常陌生!

我正在为我的网站构建一个报价工具,它基本上是一个客户填写的表格,它将创建一个“报价”模型的实例,并且实际的报价值将自动计算并存储为一部分模型实例的数据,基于用户输入的数据。

我在网上查了一下,但我真的很难找到一个简单的解释,说明如何根据早期字段的数据输入来验证和/或自动计算和存储模型字段。

我的第一个障碍如下:

类引用(模型.模型):

total_plots = models.IntegerField(default=1)
total_types = models.IntegerField(default=(total_plots),validators=[MinValueValidator(1),MaxValueValidator(total_plots)])

所以我在这里尝试但未能做的是最初将total_types的默认值设置为与用户为total_plots输入的值相同。然后我想允许用户更改total_types的值,但它不能大于他们为total_plots输入的值,所以我需要获取他们为total_plots输入的值并用它来限制他们能够执行的操作输入total_types。

我在这里遇到的错误是这样的:“TypeError: '<=' not supported between instances of 'IntegerField' and 'int'"

进一步,我还希望自动计算报价值,并将其存储为模型实例的一部分。

我想象模型的那部分看起来像这样:

报价值=总时间*每小时费率

报价值 = self.total_time * self.hourly_rate

#总时间也是根据大量其他用户输入自动计算的,每小时费率将是我可以设置/调整的变量。

我再次需要从用户输入中获取大量数据并使用它来计算结果,然后将这些结果存储为模型实例的一部分。

python django django-models
1个回答
0
投票

我想我理解你想要做什么,但我不确定我是否理解你所设置的所有细节,所以这更多的是一个想法建议而不是答案。

关于模型需要记住的一点是它们代表数据库中的表,而不一定是报价的特定实例。 我的方法是在模型中非常简单地设置每个字段,然后将自动填充或最大值的任何逻辑放入视图本身。 在视图中验证数据比在模型中验证数据要容易得多,因为您将能够处理特定的实例/报价,而不是假设报价应该是什么样子的抽象概念。

(在模型方面)设置多个模型也可能很有用,这样您就可以将事物分解为尽可能单独的部分,然后使用外键和连接之类的东西将这些较小的部分组合成更有用的整体。 这个想法称为数据库规范化,对于以更易于使用的方式设置模型非常有帮助。

另外,欢迎来到 Django 编程,恭喜你开始了这段旅程! 如果我的答案的任何部分令人困惑,请告诉我,我可以提供更多解释。

© www.soinside.com 2019 - 2024. All rights reserved.