Django: Как сделать атрибут модели зависимым от внешнего ключа, присутствующего в этой модели - PullRequest
0 голосов
/ 23 марта 2020

У меня есть две модели в Django: Штат и Город

class State(models.Model):
    #regex = re.compile(r'^[a-zA-Z][a-zA-Z ]+[a-zA-Z]$', re.IGNORECASE)
    name_regex = RegexValidator(regex=r'^[a-zA-Z]+$',
                                message="Name should only consist of characters")
    name = models.CharField(validators=[name_regex], max_length=100, unique=True)

class City(models.Model):
    state = models.ForeignKey('State', on_delete=models.SET_NULL, null=True)
    name_regex = RegexValidator(regex=r'^[a-zA-Z]+$',
                                message="Name should only consist of characters")
    name = models.CharField(validators=[name_regex], max_length=100, unique=True)
    postalcode = models.IntegerField(unique=True)

В модели города у меня есть атрибут state, который является внешним ключом из модели State. В модели города я хочу сделать имя атрибута зависимым от атрибута штата, поскольку в одном штате будет один город с одинаковым именем, но во многих штатах может быть одно название города. Например, город Удайпур находится в Раджастане и УттареPrade sh в Индии, но у Раджастана будет один город как Удайпур.

1 Ответ

0 голосов
/ 23 марта 2020

Звучит так, как будто вам необходимо ограничение unique_together для вашей City модели: https://docs.djangoproject.com/en/2.2/ref/models/options/#unique - всего

Примерно так:

class City(models.Model):
    state = models.ForeignKey('State', on_delete=models.SET_NULL, null=True)
    name_regex = RegexValidator(regex=r'^[a-zA-Z]+$',
                                message="Name should only consist of characters")
    name = models.CharField(validators=[name_regex], max_length=100, unique=True)
    postalcode = models.IntegerField(unique=True)

    class Meta:
        unique_together = ["state", "name"]
...