首页 > 解决方案 > 即使在获取数据后,Django 管理面板 list_display 也不显示

问题描述

我在 Django 管理面板中为多对多关系表显示数据。我得到了 None 而不是名字列表。

我在用:

管理面板中多对多字段的 List_display

我也已经问过一个关于这个话题的相关问题。话虽如此,从那以后我改变了我的模型(我也没有得到答案)。

楷模:

class Assessment(models.Model):
    name = models.CharField(max_length=255) 

class Participant(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE) 
    first_name = models.CharField(max_length=255,blank=True,null=True)

class Seminar(models.Model):
    topic = models.CharField(max_length=255)
        assessment = models.ManyToManyField(Assessment,blank=True)
        participant =       models.ManyToManyField(Participant,blank=True,through='SeminarParticipant',through_fields=('seminar','participant'))

class SeminarParticipant(models.Model): 
    seminar = models.ForeignKey(Seminar,blank=True,on_delete=models.CASCADE)
    participant = models.ForeignKey(Participant,blank=True,on_delete=models.CASCADE)
    request_time = models.PositiveIntegerField(default=0,validators=[MinValueValidator(0),])
    is_survey_completed = models.BooleanField(default=False)

行政:

@admin.register(Seminar)
class SeminarAdmin(admin.ModelAdmin):
    list_display = ('topic''assessment')  

    def assessment(self,obj):
        return "\n".join([item for item in obj.assessment.all()])

我在研讨会管理员的 list_display 中期待评估的名称,但assessments.Assessment.None在管理面板的 list_display 中得到了。

输出快照: 输出快照

非常感谢您的帮助

标签: pythondjango

解决方案


assessment是字段的名称,将在您的方法之前找到。调用其他方法并在list_display.

class SeminarAdmin(admin.ModelAdmin):
    list_display = ('topic', 'assessment_list')  

    def assessment_list(self, obj):
        return "\n".join([item for item in obj.assessment.all()])

(尽管注意,对于包含许多assessment评估的字段来说是一个奇怪的名称;您应该考虑重命名该字段本身。)


推荐阅读