django 在哪里保存这个类?

rvpgvaaj  于 2023-03-24  发布在  Go
关注(0)|答案(1)|浏览(131)

更新型号。型号:

class GetOrNoneManager(models.Manager):
    """returns none if object doesn't exist else model instance"""

    def get_or_none(self, **kwargs):
        try:
            return self.get(**kwargs)
        except ObjectDoesNotExist as e:
            logger.warning(e)
            return None

class BaseModel(models.Model):
    class Meta:
        abstract = True
        ordering = ('-created_at',)

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    created_at = models.DateTimeField('Дата создания', auto_now_add=True, db_index=True)
    updated_at = models.DateTimeField('Дата изменения', auto_now=True)
    objects = GetOrNoneManager()

    def str(self):
        return self.id.hex

有没有什么特定的文件,我应该创建保存这样的代码?

3j86kqsm

3j86kqsm1#

可以将其放在models.py将要使用该管理器/模型对的应用程序中的www.example.com文件中;比如:

main_folder
|   manage.py
|
└───YourProject
|       settings.py
|       urls.py
|       wsgy.py
|
└───YourApp
        models.py <-- This file

应该绝对没问题;尽管我建议你调整你的文档字符串,因为它看起来像你的.get_or_none()的定义是在类中而不是在方法上。另一种方法是创建一个应用程序,它将保存这些信息以最小化交叉依赖:

main_folder
|   manage.py
|
└───YourProject
|       settings.py
|       urls.py
|       wsgy.py
|
└───MyCustomManagers
        managers.py <- GetOrNoneManager goes here
        models.py <- BaseModel goes here

这样你就可以创建多个应用程序,它们都可以有扩展你创建的类的模型,它们都依赖于MyCustomManagers应用程序(请注意,这不是一个很好的命名约定,因为MyCustomManagers不是超级描述性的)。

相关问题