在Django中添加自定义字段的最佳实践

时间:2013-01-03 15:41:14

标签: python django

我的/app/models.py中有自定义字段。我的问题是......

这里的最佳做法是什么?我应该有一个单独的文件,即customField.py并导入到models.py,还是应该都在同一个models.py文件中? 最佳实践

class HibernateBooleanField(models.BooleanField):

    __metaclass__ = models.SubfieldBase

    def get_internal_type(self):
        return "HibernateBooleanField"

    def db_type(self):
        return 'bit(1)'

    def to_python(self, value):
        if value in (True, False): return value
        if value in ('t', 'True', '1', '\x01'): return True
        if value in ('f', 'False', '0', '\x00'): return False

    def get_db_prep_value(self, value, *args, **kwargs):
        return 0x01 if value else 0x00

2 个答案:

答案 0 :(得分:1)

我不建议在一个models.py文件中包含所有内容。我喜欢为模型,字段和视图创建单独的包,然后包含其他模块。我认为这是Django应用程序的代码结构和可读性的最佳解决方案之一。 它看起来像这样:

/app
  /models
     /__init__.py
     /model1.py
     /model2.py
  /fields
     /__init__.py
     /custom_field1.py
     /custom_field2.py
  /views
     /__init__.py
     /page1.py
     /page2.py

答案 1 :(得分:1)

我会将您的任何自定义字段放在单独的fields.py

查看django.contrib中的一些应用,大多数都有一个models.pyfields.pyviews.pymiddleware.py等的通用结构。< / p>

遵循标准意味着任何熟悉django框架的人都可以轻松接听您的应用。