【问题标题】:Django admin panel list_display show none even after fetching data即使在获取数据后,Django 管理面板 list_display 也不显示
【发布时间】:2019-07-18 08:42:48
【问题描述】:

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

我正在使用:

  • 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

输出快照:

非常感谢您的帮助

【问题讨论】:

    标签: python django


    【解决方案1】:

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

    【讨论】:

    • 实际上 obj.assessment.all() 中项目的 item.name 对我有用。并感谢您对在 django 中命名事物的澄清。非常感谢! @丹尼尔罗斯曼
    猜你喜欢
    • 2018-02-12
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多