django 如何设置与某些字段的关系

django how to set relation to some fields

我想在那种情况下设置关系

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 中的方法 = Cash 获取 SaleType 的外键

如果 ForSale 中的方法 = Rent 获取 SaleType2 的外键

我想 GenericForeignKey 就是您要找的。更多详情 here.

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 限于 SaleTypeSaleType2。还要保持 methodcontent_type.

之间每一行的关系