0

我在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'视图应该在 arctic_seasons 中插入一个 season_name = '2011_Greenland_P3' 的新季节

本质上它应该做”

s = arctic_seasons(name=season);
s.save()

我的问题是,如何编写可以处理变量位置前缀的代码。如果该位置是“南极”,则声明将变为:

s = antarctic_seasons(name=season);
s.save()

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

4

1 回答 1

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()
于 2013-05-28T15:45:30.840 回答