首页 > 解决方案 > 如何显示外键属性 django 管理字段?

问题描述

这个问题与其他问题相似,但实际上是不同的!所以,我有 3 个模型,例如(我删除了一些不必要的东西以缩短代码):

class Category(models.Model):
    category_title = models.CharField(max_length=200)
    category_content = models.TextField()
    category_slug = models.CharField(max_length=200)

     def __str__(self):
         return self.category_title


class Classes(models.Model):
    classes_title = models.CharField(max_length=200)
    classes_content = models.TextField()
    classes_category = models.ForeignKey(Category, on_delete=models.SET_DEFAULT)

     def __str__(self):
         return self.classes_title

class Subjects(models.Model):
    subject_title = models.CharField(max_length=200)
    subject_content = models.TextField()
    subject_class = models.ForeignKey(Classes, on_delete=models.SET_DEFAULT)

    def __str__(self):
         return self.subject_title

所以让我举个例子。我可以有 2 个类别,在这些类别中我可以有“同名”类。让我们想想数学是两个类别的课程。当我想在数学中添加一个新主题时,我在管理页面中看到了 2 个同名的数学。所以我想知道哪个属于管理页面中的哪个类别。所以我可以将我的主题添加到正确的课程中。

class SubjectAdmin(admin.ModelAdmin):

    fields = ('subject_title', 'subject_content', 'subject_class',)

所以在这张图片中(Subjects = Konular)我添加了一个新的主题。我将有一个 Class 的外键。但是,对于来自不同类别的类,我有相同的名称。那么在这个下拉列表中,我如何知道哪个类属于哪个类别?

在此处输入图像描述

标签: pythondjango

解决方案


试试这个...

class KonularAdmin(admin.ModelAdmin):

    fields = ('subject_title', 'subject_content', 'subject_class', 'get_classes_category_title')

    def get_classes_category_title(self, obj):
         subject_object = Subjects.objects.get(id=obj.subject_class)
         return str(subject_object.classes_category.category_title)

  • 它返回类别标题名称

推荐阅读