【问题标题】:Can this be done with django __str__ method?这可以用 django __str__ 方法完成吗?
【发布时间】:2019-03-30 14:23:04
【问题描述】:

我有 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 的描述 如何更改每个模型返回的内容Model1,Model2 str 方法中的示例,如果模型是 Model2,则返回“type”;如果模型是 Model1,则返回“description”。

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

【问题讨论】:

    标签: python django model


    【解决方案1】:

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

    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?
    

    【讨论】:

    • 你的方法保存后返回“列表显示”上的方法
    • @Martins 啊,我误会了。你想让MyModel 改变__str__ 输出基于Model1 或Model2 的存在吗?
    • 这就是我的意思。
    • @Martins 我已经编辑了答案检查它是否满足你
    • 两个模型都返回空
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多