指向一个数据库表的两个模型冗余代码[Django 2.1]

2024-04-23 11:48:12 发布

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

我正在做一个Django项目,这个项目是由该公司的一位前雇员做的(所以我正在重构一个由其他人做的、没有遵循Django最佳实践的项目),这个项目在不同的应用程序上有两个模型,在数据库上使用相同的表。两个应用程序都使用城市和州表。你知道吗

我想知道哪一个是最好的方式来应用干燥的概念和使用只有一个模型的两个应用程序访问这些表格。你知道吗

这两个应用程序位于项目文件夹中,每个应用程序都有自己的models.py,代码如下:

from django.db import models
from django.contrib.auth.models import User,Group
from django.db.models.signals import post_save
from django.dispatch import receiver

class state(models.Model):
    class Meta:
        db_table = '"db_property"."state"'
    created_at = models.DateTimeField(db_column='created_at')
    updated_at = models.DateTimeField(db_column='updated_at')
    name = models.CharField(db_column='name',max_length=50)

class city(models.Model):
    class Meta:
        db_table = '"db_property"."city"'
    created_at = models.DateTimeField(db_column='created_at')
    updated_at = models.DateTimeField(db_column='updated_at')
    name = models.CharField(db_column='name',max_length=50)
    state = models.ForeignKey(state,on_delete=models.CASCADE)

提前谢谢!你知道吗


Tags: 项目djangonamefromimport应用程序dbmodels
1条回答
网友
1楼 · 发布于 2024-04-23 11:48:12

我错过什么了吗?你知道吗

citystate放在一个或其他应用程序中,甚至放在它们自己的citystate应用程序中,并从它们定义的位置导入它们。在一个名为foo的应用程序中:

from citystate.models import city, state

顺便说一句,Django模型是classes,因此通常以大写字母开头:CityState。尊重像这样的约定:你可能还没有被弄糊涂,但是你会把其他阅读这段代码的人搞糊涂,他们会认为这些被导入的东西是函数而不是类!你知道吗

应用程序不需要有任何视图、URL等。它可以只是一个放置公共模型和它们的迁移的地方,也许还有一些管理类。你知道吗

相关问题 更多 >