首页 > 解决方案 > 如何避免将多个元素硬编码到我的 Django 模型中?

问题描述

我对 Stack Overflow 很陌生,所以提前感谢您的洞察力。这是一个关于 Django 3.0(所以 Python 3.6+)的问题。

用例:

假设我已经成功地解析了联邦法规,并且我已经确定每个法规都包含三个部分 - 引文、主题和法规本身。我可以根据需要将它们解析为嵌套字典(或 XML、CSV 或任何格式)。

字典是这样的:

{ 
  'citation 1' : {'Subject of Regulation 1' : 'Text of regulation'} 
  'citation 2' : {'Subject of Regulation 2 : 'More regulatory text'}

}

有数百条法规和引用。我不想将这些规则硬编码到我的模型中,所以我想将它们存储在字典中并将它们调用到我的模型中。

我们还假设我有一个复杂的业务,需要遵守许多这些法规,所以我必须弄清楚每个法规是否适用以及我将如何实施它。

所以这是我的models.py

class CFR(models.Model):
    citation = models.CharField(max_length = 25)
    subject = models.CharField(max_length = 25)
    regulation_text = models.TextField()
    applicable = models.BooleanField(default = True)
    implementation = models.TextField()

该模型包含适用性和实施​​的字段。

我的表格.py。是的,我知道我不应该使用__all__.

class RegulationForm(forms.ModelForm):
    class Meta():
        model = CFR
        fields = ('__all__')

和我的views.py

class ApplicabilityView(CreateView):
    model = CFR
    template_name = "template.html"
    form_class = RegulationForm

我想使用该模型:

  1. 遍历字典中的每个规则。
  2. 呈现包含字典中所有规定的表格
  3. 将模型中的两个字段附加到表格中的每个规则(适用实施字段)。
  4. 在表格末尾有一个保存按钮。

我希望使用 将法规字典传递到查询集中def get_initial,但我似乎无法弄清楚。传递字典将允许我在 CFR 的任何部分重复使用代码,只要我能弄清楚如何制作字典。

另一种方法是将所有法规硬编码到我的models.py- 我宁愿找到一个更灵活的解决方案。

谢谢!

标签: pythondjango

解决方案



推荐阅读