Django管理面板list_display即使在获取数据后也不显示任何内容

时间:2019-07-18 08:42:48

标签: python django

我正在Django管理面板中显示多对多关系表的数据。我没有名字,而是名字列表。

我正在使用:

  • Python:3.6
  • Django:2.2

List_display for ManytoMany fields in Admin panel

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

型号:

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中获得评估的名称,但在管理员面板的list_display中得到assessments.Assessment.None

输出快照: snap shot of output

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

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是包含许多评估的字段的奇数名称;您应该考虑重命名该字段本身。)