Django 2.1 中两个模型指向一个数据库 table

Two models pointing to one database table in Django 2.1

我正在处理一个由公司前雇员制作的 Django 项目(所以我正在重构一个由其他人制作的没有遵循 Django 最佳实践的整个项目),它有两个不同的模型应用程序在数据库中使用相同的表。 City 和 State 表在两个应用程序中都使用。

我想知道哪个是应用 DRY 概念的最佳方式,并且两个应用程序只使用一个模型访问这些表。

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

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)

我是不是漏掉了什么?

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

的应用中
from citystate.models import city, state

顺便说一下,Django 模型是 classes,因此通常以大写字母开头:CityState。尊重这样的约定:你可能(还)不困惑,但你会混淆阅读这段代码的其他人,他们会认为这些被导入的东西不是函数 类!

一个应用程序不需要有任何视图、url 等。它可以只是一个放置通用模型及其迁移的地方,也许还有一些管理员 类。