可以使用django __str__方法完成此操作吗?

时间:2018-10-25 21:22:55

标签: python django model

我有2个带有外键的模型

class MyModel(models.Model):
    description = models.CharField(max_length=50)
    type = models.CharField(max_length=10)
    def __str__(self):
        return self.description

class Model1(models.Model):
    mymodel = models.ForeignKey(MyModel)

class Model2(models.Model):
    mymodel = model.ForeignKey(MyModel)

mymodel的管理员下拉列表中, str 方法返回MyModel的描述。 如何更改每个模型Model1Model2返回的内容 str 方法中的示例,如果模型为Model2,则返回“类型”,如果模型为Model1,则返回“说明”。

基本要问的是如何有条件地在MyModel中返回“类型”或“描述”

1 个答案:

答案 0 :(得分:0)

我个人不喜欢这种解决方案。

ForeignKey表示多对一关系。而您想要达到相反的水平。

class MyModel(models.Model):
    description = models.CharField(max_length=50)
    type = models.CharField(max_length=10)
    def __str__(self):
        if self.model1_set.exists():
            return self.type
        if self.model2_set.exists():
            return self.description
        # What to return if both exists or none of them?