我正在Django管理面板中显示多对多关系表的数据。我没有名字,而是名字列表。
我正在使用:
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
。
输出快照:
非常感谢您的帮助
答案 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
是包含许多评估的字段的奇数名称;您应该考虑重命名该字段本身。)