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' の場合、ビューは、season_name = '2011_Greenland_P3' で新しいシーズンを arctic_seasons に挿入する必要があります。

本来ならそうすべきだ」

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 に答える