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)
我是不是漏掉了什么?
将 city
和 state
放在一个或其他应用程序中,甚至放在他们自己的 citystate
应用程序中,然后从定义它们的地方导入它们。在名为 foo
:
的应用中
from citystate.models import city, state
顺便说一下,Django 模型是 class
es,因此通常以大写字母开头:City
和 State
。尊重这样的约定:你可能(还)不困惑,但你会混淆阅读这段代码的其他人,他们会认为这些被导入的东西不是函数 类!
一个应用程序不需要有任何视图、url 等。它可以只是一个放置通用模型及其迁移的地方,也许还有一些管理员 类。
我正在处理一个由公司前雇员制作的 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)
我是不是漏掉了什么?
将 city
和 state
放在一个或其他应用程序中,甚至放在他们自己的 citystate
应用程序中,然后从定义它们的地方导入它们。在名为 foo
:
from citystate.models import city, state
顺便说一下,Django 模型是 class
es,因此通常以大写字母开头:City
和 State
。尊重这样的约定:你可能(还)不困惑,但你会混淆阅读这段代码的其他人,他们会认为这些被导入的东西不是函数 类!
一个应用程序不需要有任何视图、url 等。它可以只是一个放置通用模型及其迁移的地方,也许还有一些管理员 类。