如何将模型分成两个应用程序

How to separate the model into two applications

我有一个应用程序和一个模型。 我想在两个应用程序上分离模型,以便从单独的应用程序管理用户。 转移这个模型会成功吗?我必须做什么?

class User(AbstractUser):

    country = models.CharField(max_length=2, choices=COUNTRY, default=RUSSIA)

这是我的 models.py - 必须分开

RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'


COUNTRY = (
    (RUSSIA, "Russia"),
    (USA, "USA"),
    (GERMANY, "Germany"),
)

class User(AbstractUser):

    country = models.CharField(max_length=2, choices=COUNTRY, default=RUSSIA)


class Country(models.Model):

    country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA)
    name_of_team = models.CharField(max_length=255, blank=True, null=True)

    def __unicode__(self):
        return self.name_of_team

您可以创建两个应用程序,一个用于用户,一个用于国家/地区,然后您只需将国家/地区模型导入用户模型即可。

此外,如果你想保持国家和用户之间的关系,你应该使用 ForeignKey。很抱歉,如果它与您的逻辑不符,但我不确定您的模型看起来如何,这对我来说有点陌生。

像这样:

country/models.py

RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'

COUNTRY = (
    (RUSSIA, "Russia"),
    (USA, "USA"),
    (GERMANY, "Germany"),
)


class Country(models.Model):
    # I don't know why country attr in Country class
    country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA)
    name_of_team = models.CharField(max_length=255, blank=True, null=True)

    def __unicode__(self):
        return self.name_of_team

user/models.py

from country.models import Country

class User(AbstractUser):
    # ForeignKey, here you make the relation with country model
    country = models.ForeignKey(Country)

您可以创建两个应用程序,一个用于用户,一个用于国家。然后将 User 模型放入 Users 应用程序,将 Country 模型放入 Countries 应用程序。

然后在第三个应用程序中,您可以根据需要导入它们:

from countries.models import Country
from users.models import User

将这部分代码放在settings.py文件中:

RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'


COUNTRY = (
    (RUSSIA, "Russia"),
    (USA, "USA"),
    (GERMANY, "Germany"),
)

如果你这样做,那么你可以像这样从两个应用程序访问常量:

from django.conf import settings

settings.COUNTRY