Показать поле многие ко многим в панели администратора django
Я использую эту функцию (cedi), но она не работает. Я хочу показать поле nombre модели Cedi в панели администратора модели Campania. Название колонки появляется, но информация или каждый экземпляр не появляется.
@admin.register(Campania)
class CampaniaAdmin(ImportExportMixin, admin.ModelAdmin):
# conecta con CampaniaResource
resource_class = CampaniaResource
list_display = ('nombre', 'descripcion', 'cedi')
list_filter = ('nombre', )
readonly_fields = ('fecha_creacion', 'fecha_modificacion')
search_fields = ['nombre',]
def cedi(self, obj):
return ", ".join([i.nombre for i in obj.cedis.all()])
модели
class Campania(models.Model):
nombre = models.CharField(verbose_name='campaña', max_length=200, primary_key=True)
fecha_creacion = models.DateTimeField(auto_now_add=True)
fecha_modificacion = models.DateTimeField(auto_now=True)
descripcion = models.TextField()
# campo manytomany
cedis = models.ManyToManyField(Cedi)
def __str__(self):
return self.nombre
class Cedi(models.Model):
nombre = models.CharField(max_length=200, primary_key=True)
fecha_creacion = models.DateTimeField(auto_now_add=True)
fecha_modificacion = models.DateTimeField(auto_now=True)
# campo ForeignKey
pais = models.ForeignKey(Pais, on_delete=models.CASCADE)
def __str__(self):
return self.nombre
Я сделал то же самое, используя ваш код, и получил такой результат: показывается поле M2M в админке django
Вот как выглядит код с моей стороны:
models.py
class Pais(models.Model):
name = models.CharField(max_length=200, primary_key=True)
class Cedi(models.Model):
nombre = models.CharField(max_length=200, primary_key=True)
fecha_creacion = models.DateTimeField(auto_now_add=True)
fecha_modificacion = models.DateTimeField(auto_now=True)
# campo ForeignKey
pais = models.ForeignKey(Pais, on_delete=models.CASCADE)
def __str__(self):
return self.nombre
class Campania(models.Model):
nombre = models.CharField(verbose_name='campaña', max_length=200, primary_key=True)
fecha_creacion = models.DateTimeField(auto_now_add=True)
fecha_modificacion = models.DateTimeField(auto_now=True)
descripcion = models.TextField()
# campo manytomany
cedis = models.ManyToManyField(Cedi)
def __str__(self):
return self.nombre
admin.py
class PaisAdmin(admin.ModelAdmin):
list_display = [f.name for f in Pais._meta.fields]
admin.site.register(Pais, PaisAdmin)
class CediAdmin(admin.ModelAdmin):
list_display = [f.name for f in Cedi._meta.fields]
admin.site.register(Cedi, CediAdmin)
@admin.register(Campania)
class CampaniaAdmin(ImportExportMixin, admin.ModelAdmin):
# conecta con CampaniaResource
resource_class = Campania
list_display = ('nombre', 'descripcion', 'cedi')
list_filter = ('nombre', )
readonly_fields = ('fecha_creacion', 'fecha_modificacion')
search_fields = ['nombre',]
def cedi(self, obj):
return ", ".join([i.nombre for i in obj.cedis.all()])