Je voudrais faire une clé naturelle pour un modèle qui est la combinaison de deux valeurs.Touches naturelles Django, combinaison de deux valeurs?
J'ai essayé les suivantes:
class TeamManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class Team(models.Model):
objects = TeamManager()
name = models.CharField(max_length=100, unique=True)
def natural_key(self):
return name
class SeasonManager(models.Manager):
def get_by_natural_key(self, team, year):
return self.get(team=team.natural_key(), year=year)
class Season(models.Model):
objects = SeasonManager()
year = models.CharField(max_length=25, choices=YEARS)
team = models.ForeignKey(Team)
def natural_key(self):
return "%s-%s"%(self.team.natural_key(),self.year)
natural_key.dependencies = ['league.Team']
Lorsque je tente d'accéder au modèle de la saison par ses clés naturelles "Atlanta Falcons", "2013-1014" Je reçois cette exception:
ValueError: invalid literal for int() with base 10: 'Atlanta Falcons'
merci, c'est une approche plus sensible – mconlin