Django Generic Factory

时间:2018-06-12 16:13:30

标签: python django django-models factory-pattern

我有两个问题困扰我。我正面临一个实现,其中一些文档与不同级别的地理数据相关,并希望工厂生成它们。让我们看一个例子,我认为它可能有用:

from django.contrib.gis.db import models


class Country(models.Model):
    name = models.CharField(max_length=60)


class Region(models.Model):
    country = models.ForeignKey(Country, on_delete=models.PROTECT)
    name = models.CharField(max_length=60)


class Law(models.Model):
    text = models.CharField(max_length=60)

    class Meta:
        abstract = True


class CountryLaw(Law):
    country = models.ForeignKey(Country, on_delete=models.CASCADE)


class RegionLaw(Law):
    region = models.ForeignKey(Region, on_delete=models.CASCADE)

# Not sure this work but the idea is here
class LawManager(models.Manager):
    def create_law(text,geodata):
        if isinstance(geodata, Country):
            return CountryLaw(text=text, country=geodata)
        elif isinstance(geodata, Region)
            return RegionLaw(text=text, region=geodata)
        else:
            raise TypeError("Inapropriate geodata type")

我想要一些工厂方法,因为我有一些工作来填补所有法律所共有的“法律”领域,但这个例子没有显示出来。 我的问题如下:

  • 有没有更好的方法来设计Law对象?
  • 这样的经理会工作吗?我怎么能访问它?

我在谷歌和stackoverflow上搜索答案,但不知道使用什么关键字,并没有找到任何可以帮助我的东西..

感谢您的帮助!

0 个答案:

没有答案