我正在处理公司前雇员制作的Django项目(因此,我重构了一个不遵循Django最佳实践的其他人制作的整个项目),该项目在不同的应用程序上有两个模型在数据库上使用相同的表。两个应用程序都使用了城市和州表。
我想知道哪种方法是应用DRY概念的最佳方法,并且两个应用程序只能使用一种模型访问这些表。
这两个应用程序位于项目文件夹中,每个应用程序都有自己的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)
谢谢!
答案 0 :(得分:2)
我想念什么吗?
将city
和state
放在一个或其他应用程序中,甚至在自己的citystate
应用程序中,然后从定义的位置导入它们。在名为foo
的应用中:
from citystate.models import city, state
顺带一提,Django模型是class
,因此通常会以大写字母City
和State
开头。遵循这样的约定:您可能还不会感到困惑(但是),但是您会混淆阅读此代码的其他人,他们会认为导入的这些东西是函数而不是类!
应用程序不需要具有任何视图,URL等。它可以只是放置常见模型及其迁移以及某些管理类的地方。