0

我正在学习 Django,可能有一个我找不到的简单答案,因为我不知道要搜索什么。

我有一个名为的类/表NFLteam,一旦为 NFL 中的每支球队填充了一个条目,它就永远不会改变。我把它做成了一个数据库表,这样我就可以在另一个表中拥有一个指向特定 NFL 球队的外键。现在球队只有一个领域,一个名字。然而,在未来,他们将拥有更多。

models.py

class NFLteam( models.Model ):
    team_name  = models.CharField( max_length=3, choices=NFL_TEAMS )

    def __unicode__( self ):
        return self.team_name

这是NFL_TEAMS上面引用的序列:

NFL_TEAMS = (
    ( 'ARI', 'Arizona Cardinals' ),
    ( 'ATL', 'Atlanta Falcons' ),
    ( 'BAL', 'Baltimore Ravens' ),
    ( 'BUF', 'Buffalo Bills' ),
    ( 'CAR', 'Carolina Panthers' ),
    ( 'CHI', 'Chicago Bears' ),
    ( 'CIN', 'Cincinnati Bengals' ),
    ( 'CLE', 'Cleveland Browns' ),
    ( 'DAL', 'Dallas Cowboys' ),
    ( 'DEN', 'Denver Broncos' ),
    ( 'DET', 'Detroit Lions' ),
    ( 'GB' , 'Green Bay Packers' ),
    ( 'HOU', 'Houston Texans' ),
    ( 'IND', 'Indianapolis Colts' ),
    ( 'JAX', 'Jacksonville Jaguars' ),
    ( 'KC' , 'Kansas City Chiefs' ),
    ( 'MIA', 'Miami Dolphins' ),
    ( 'MIN', 'Minnesota Vikings' ),
    ( 'NE' , 'New England Patriots' ),
    ( 'NO' , 'New Orleans Saints' ),
    ( 'NYG', 'New York Giants' ),
    ( 'NYJ', 'New York Jets' ),
    ( 'OAK', 'Oakland Raiders' ),
    ( 'PHI', 'Philadelphia Eagles' ),
    ( 'PIT', 'Pittsburgh Steelers' ),
    ( 'SD' , 'San Diego Chargers' ),
    ( 'SEA', 'Seattle Seahawks' ),
    ( 'SF' , 'San Francisco 49ers' ),
    ( 'STL', 'Saint Louis Rams' ),
    ( 'TB' , 'Tampa Bay Buccaneers' ),
    ( 'TEN', 'Tennessee Titans' ),
    ( 'WAS', 'Washington Redskins' ),
)

由于NFLteam表不应该改变(或者非常非常少),有没有办法让它最终确定或不可变,这样模型会拒绝接受更新?理想情况下,我希望它与数据库无关,以便它与 SQLite、MySql 等(如 Django 模型定义)一样工作。

4

2 回答 2

1

我会这样做:

class NonUpdateAbleModelMixin():
    def save(self, *args, **kwargs):
        pass


class NFLteam(models.Model, NonUpdateAbleModelMixin):
    team_name  = models.CharField( max_length=3, choices=NFL_TEAMS )

    def __unicode__( self ):
        return self.team_name

在里面save你可以使用设置中的一些标志或任何你想要的

于 2013-10-02T07:00:49.603 回答
1

您可以在设置中的某处添加一个标志,然后覆盖该类的保存功能,如果该标志打开则返回。

from django.conf import settings
...
class NFLTeam(models.Model):
...
    def save(self, *args, **kwargs):
        if settings.NFL_NO_SAVE is True:
             return
于 2013-10-02T03:06:54.873 回答