【问题标题】:Custom model fields and form fields in reusable Django app: naming convention可重用 Django 应用程序中的自定义模型字段和表单字段:命名约定
【发布时间】:2015-12-26 22:25:43
【问题描述】:

我正在编写一个可重用的 Django 应用程序,它提供自定义模型字段和自定义表单字段。我正在考虑将两个部分之一放在一个名为 fields.py 的文件中,但很明显,我不能将模型和表单字段放在同一个文件中。

我的问题是:在可重用应用中命名自定义模型字段和自定义表单字段是否有任何命名约定或推荐的最佳做法?

我正在考虑复制 Django 的结构,但字段文件都位于不同的模块中(django.db.model.fieldsdjango.forms.fields),而我的表单和模型字段位于同一模块(应用程序)中。

在这种情况下,文档没有说明命名约定:它只是解释了如何对字段进行编码,而不是代码应该在哪里(留给用户)。

【问题讨论】:

    标签: django


    【解决方案1】:

    虽然 Django 将模型字段放在 django.db.model.fields 中,将表单字段放在 django.forms.fields 中,但对于大多数 Django 开发人员来说,这只是一个内部实现细节。

    模型和表单字段可通过modelsforms 模块直接访问:

    from django.db import models
    from django import forms
    
    class Question(models.Model):
        question_test = models.CharField(max_length=200)
    
    class NameForm(forms.Form):
        your_name = forms.CharField(label='Your name', max_length=100)
    

    对于一个简单的应用程序,可以分别在models.pyforms.py 中放置模型和表单放置字段。这样,您的应用程序的界面将与 Django 的界面相匹配。

    对于更复杂的应用,您可以使用db/fields.pyforms/fields.py 创建层次结构。但是,如果您尝试密切关注 Django 的界面,您可能希望这些字段仍然可以通过 modelsforms 模块访问。为此,您需要将相关fields.py 文件的内容导入db/models.pyforms/__init__.py,如下所示:

    from .fields import *
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 2015-06-13
      • 2019-07-11
      • 1970-01-01
      • 2021-04-15
      • 2017-05-05
      • 2014-01-12
      • 2017-12-17
      • 2011-04-08
      相关资源
      最近更新 更多