python - 即使在获取数据后,Django 管理面板 list_display 也不显示
问题描述
我在 Django 管理面板中为多对多关系表显示数据。我得到了 None 而不是名字列表。
我在用:
- 蟒蛇:3.6
- 姜戈:2.2
我也已经问过一个关于这个话题的相关问题。话虽如此,从那以后我改变了我的模型(我也没有得到答案)。
楷模:
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 中得到了。
输出快照:
非常感谢您的帮助
解决方案
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
评估的字段来说是一个奇怪的名称;您应该考虑重命名该字段本身。)
推荐阅读
- python - Pandas 根据另一列中的值合并某些行中的列以处理非统一的 csv 数据
- kotlin - 如何按距离打印最热门的运动,不包括 kotlin 中的电动自行车?
- javascript - 如何在 botframework 网络聊天中修改锚标签
- c# - 如何在 C# 中使用 Google Protobuf 创建 FieldMask 对象?
- rest - 失眠:如何在“非”json access_token 上使用模板
- java - Androidx Guideline 无法转换为 ViewGroup
- php - 当某些子类不需要在PHP中的抽象类中执行方法时如何改进代码
- python - 从 Python 2 切换到 Python 3 时使用 CFFI 的分段错误
- google-apps-script - UrlFetchApp 函数不适用于数组
- typescript - StyleSheet 对象类型?