1

Django アプリに 3 つのモデルがあり、それぞれに「ホスト名」フィールドがあります。いくつかの理由から、これらは異なるモデルで追跡されます。

class device(models.Model):
...
hostname = models.CharField(max_length=45, unique=True, help_text="The hostname for this device")
...

class netdevice(models.Model):
...
hostname = models.CharField(max_length=45, unique=True, help_text="Name Associated with Device", verbose_name="Hostname")
...

class vipdevice(models.Model):
...
hostname = models.CharField(max_length=45, unique=True, help_text="Name associated with this Virtual IP", verbose_name="name")
...

ホスト名フィールドが 3 つのモデル間で重複していないことを確認するための検証を設定するにはどうすればよいですか?

http://docs.djangoproject.com/en/dev/ref/validators/#ref-validatorsを見てきましたが、それが正しいパスかどうかはわかりません。特に、関数内の他のクラスからオブジェクトを作成する場合など.

4

1 に答える 1

3

Model Inheritanceを使用できます。そのようです:

class BaseDevice(models.Model): #edit: introduced a base class
    hostname = CharField(max_length=45, unique=True, help_text="The hostname for this device")

class Device(BaseDevice):
    pass

class NetDevice(BaseDevice):
    #edit: added attribute
    tracked_item=models.ForeignKey(SomeItem)

class VipDevice(BaseDevice):
    #edit: added attribute
    another_tracked_item=models.ForeignKey(SomeOtherItem)

BaseDevice をabstractモデルとして定義しないでください。

于 2010-02-08T23:57:15.777 に答える