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

时间:2015-01-27 13:22:35

标签: python django django-models models

我有一个应用程序和一个模型。 我想在两个应用程序上分离模型,以便用户从一个单独的应用程序进行管理。 这种模式的转移会起作用吗?我该怎么办?

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

2 个答案:

答案 0 :(得分:0)

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

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

这样的事情:

国家/ 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

用户/ models.py

from country.models import Country

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

答案 1 :(得分:0)

您可以创建两个应用程序,一个用于用户,一个用于国家/地区。然后将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