使用具有非持久性的Django模型模型.字段

2024-10-02 10:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有一种方法可以将字段添加到Django模型类中,以便:

  1. 它不会被持久化到数据库中(即数据库中没有列)
  2. 它确实是由一个ModelForm呈现的
  3. 该字段的小部件可以定制

我相信3。可以用一个自定义小部件完成,和2。如果字段继承自models.Field,则将发生。但是,我还没有找到一个方法来达到1。没有打破2。和3。我希望得到persist=False或{}类型的解决方案。在

场景:

我使用它来快速生成数据捕获表单,只需向模型添加一个类,但是为了插入子部分的标题,我仍然需要编辑模板。希望能做到以下几点:

模型.py

from django.db import models

class Applicant(models.Model):    
    sectionA = models.SectionField(help_text="Personal details")
    title = models.CharField(max_length=100)
    name = models.CharField(max_length=100)

    sectionB = models.SectionField(help_text="Banking details")
    account = models.CharField(max_length=100)
    pin = models.CharField(max_length=100)

在上面的例子中,sectionA和sectionB是一个定制的model.Field的实例,它实际上并没有被持久化,而是导致一个标题由ModelForm和一个定制小部件呈现

最后:

  • 我意识到这可能违反了视图和模型的分离。在
  • 关于非持久化字段的其他问题也被问到了,但是它们的解决方案不会以模型形式呈现

Tags: 方法模型数据库标题field部件modelshelp
1条回答
网友
1楼 · 发布于 2024-10-02 10:28:13

在某种程度上,只是不要让他们成为一个模型领域,他们没有必要成为。在

sectionA = "Personal details"
sectionB = "Banking details"

您可以通过form.instance在需要它们的地方访问它们,甚至可以使它们成为一个表单字段,而不是我在这里展示的字符串。在

相关问题 更多 >

    热门问题