django как установить отношение к некоторым полям - PullRequest
0 голосов
/ 09 апреля 2020

я хочу установить отношение в этом случае

class SaleType(models.Model):
    price = models.CharField(max_length=50)
    contract = models.CharField(max_length=50)

    def __str__(self):
        return str(self.price)

class SaleType2(models.Model):
    totalContract = models.CharField(max_length=50)
    requierd = models.CharField(max_length=50)

    def __str__(self):
        return str(self.totalContract)

class ForSale(models.Model):
    method = models.ForeignKey(Method, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.method)

если метод в ForSale = Ca sh получить внешний ключ для SaleType

если метод в ForSale = Rent получить внешний ключ для SaleType2

1 Ответ

0 голосов
/ 09 апреля 2020

Я думаю GenericForeignKey - это то, что вы ищете. Подробнее здесь .

class ForSale(models.Model):
    method = models.CharField(choices=(('Cash', 'cash'), ('Rent', 'rent')), ...)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')
    ...

Добавить проверки в поддержку content_type, ограниченные SaleType & SaleType2. Также сохраняйте отношения в каждой строке между method и content_type.

...