Django模型参考和数据更新/插入

时间:2013-05-28 15:35:40

标签: django string django-models insert

我在 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()

但是我显然不想复制所有这些代码。我怎么能这样做?

1 个答案:

答案 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()