gpt4 book ai didi

mysql - 如何在 MySQL 中创建一个字段,从 Django 中的可调用函数获取数据?

转载 作者:行者123 更新时间:2023-11-29 07:03:43 25 4
gpt4 key购买 nike

如何设置一个 django 字段,根据其他字段从函数获取数据?让我用下面的例子来解释一下。

class Test(models.Model):
def testType(self):
return str(self.__class__.__name__)
sources = models.CharField(default= testType, max_length=50, null=True, blank=True)

在这种情况下,如果我进入 django 前端界面并点击“添加测试”,我可以看到一个用于填写“源”的框。这不是我想要的方式。我想要: 1.后端 MySQL 数据库中有一个名为“sources”的字段,2.“添加测试”表单中没有用于填写“sources”的框,3.“sources”字段将获取数据为当我添加新记录时。

任何可以帮助我解决此问题的建议将不胜感激。

最佳答案

您需要在这里做几件不同的事情来实现您想要的。

  1. a field named 'sources' in the back-end MySQL database
  2. The 'sources' field will get data as soon as I add a new record.

你已经拥有了。从可调用的 does exist 设置默认值。问题是试图在创建过程中设置 self 的默认值。

您可以通过覆盖 save() 来实现这一点在测试

您的测试模型如下所示:

class Test(models.Model):
sources = models.CharField(max_length=50, null=True, blank=True)

def save(self):
self.sources = str(self.__class__.__name__)
super(Test, self).save()

现在,每当您保存(创建或更新)测试模型实例时,它都会设置源字段。

  1. No box for 'sources' to fill out in the "add Test" form

docs向您展示如何选择要在表单中显示的字段。您可以使用字段排除。显式列出您想要在表单中显示的字段往往是更好的安全实践,而不是使用 exclude 隐式执行此操作。

带有字段:

class Meta: #Put this in your Test form
model=Test
fields = ('someField',)

现在,只有 someField 会在您的表单中呈现。只有您放入其中的字段才会被渲染,所有其他字段都会被忽略。

排除:

class Meta: #Put this in your Test form
model=Test
exclude= ['sources']

模型上的所有字段都将被渲染除了 来源

关于mysql - 如何在 MySQL 中创建一个字段,从 Django 中的可调用函数获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com