我在 models.py (只是一个子集)中定义了一些模型
class arctic_seasons(models.Model):
season_id = models.AutoField(primary_key=True)
season_name = models.CharField(max_length=20)
description = models.CharField(max_length=20)
def __unicode__(self):
return self.season_name
class antarctic_seasons(models.Model):
season_id = models.AutoField(primary_key=True)
season_name = models.CharField(max_length=20)
description = models.CharField(max_length=20)
def __unicode__(self):
return self.season_name
请注意,这些表之间的唯一区别是前缀 arctic _ 或 antarctic _
我定义的视图基本上会解码一些GeoJSON数据并根据模型将其插入数据库。
GeoJSON有一个字符串参数'season',它将识别应该插入数据的模型(表)。
例如,假设我们最终得到了这些变量(从POST中收集的GeoJSON中提取)
season = data['properties']['season']
location = data['properties']['location']
如果 season ='2011_Greenland_P3'且 location ='arctic',该视图应在season_name ='2011_Greenland_P3'中将新赛季插入arctic_seasons
基本上应该做“
s = arctic_seasons(name=season);
s.save()
我的问题是,如何编写可以处理变量位置前缀的代码。如果该地点是“南极”,则声明将成为:
s = antarctic_seasons(name=season);
s.save()
但是我显然不想复制所有这些代码。我怎么能这样做?
答案 0 :(得分:0)
您可以更新模型
LOCATION = (('Arctic', 'Arctic'), ('Antarctic', 'Antarctic'))
class Season(models.Model):
season_id = models.AutoField(primary_key=True)
season_name = models.CharField(max_length=20)
description = models.CharField(max_length=20)
location = models.CharField(choices=LOCATION)
def __unicode__(self):
return "%s-%s"%(self.location, self.season_name)
并传入适当的参数。
s = arctic_seasons(name=season, location='Arctic');
s.save()