Django ManyToManyField не отображается в админке - PullRequest
0 голосов
/ 10 июля 2020

Как говорится в этом вопросе, у меня возникают проблемы с отображением ManyToManyField на странице django администратора.

Поле m2m, которое у меня не отображается, - это комиксы в Gig модель.

Вот код моего проекта:

#models.py file

class Host(models.Model):
     user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='host')
     name = models.CharField("Venue Name", max_length=200)
     slug = models.SlugField(allow_unicode=True, blank=True, null=True)
     description = models.TextField("Brief Venue Description - [50 Characters Max]", max_length=50, blank=True)
     profile_pic = models.ImageField("Profile Picture", upload_to='host/profile_pics',blank=True)

class Gig(models.Model):
     host = models.ForeignKey(Host, on_delete=models.CASCADE, blank=True, related_name='host_gigs')
     title = models.CharField("Gig Title",max_length=50, null=True)
     date_time = models.DateTimeField("Date/Time of Gig", null=True, blank=True)
     description = models.TextField("Describe this gig", max_length=150, blank=True)
     instructions = models.CharField('Instructions for accepted comics', max_length=200, blank=True, null=True)
     comics = models.ManyToManyField("comic.Comic", through='comic.ComicGig',related_name='gig_comics', default=" ")

#in separate app
#models.py

class Comic(models.Model):
     user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, related_name='comic')
     dob = models.DateField("Date of Birth", null=True, blank=True)
     mobile = PhoneNumberField(null=True, blank=True)
     slug = models.SlugField(allow_unicode=True, blank=True, null=True)

class ComicGig(models.Model):
    thegig = models.ForeignKey('host.Gig', on_delete=models.CASCADE, default="", related_name='comic_gig')
    comic = models.ForeignKey(Comic, on_delete=models.CASCADE, default="")
    approved_comic = models.BooleanField(default=False, null=True)

def approve(self):
    self.approved_comic = True
    self.save()

Вот мой файл Host admin.py:

  class AuthorAdmin(admin.ModelAdmin):

  list_display = ('host', 'title',)
  filter_horizontal = ('comics',)

  def formfield_for_manytomany(self, db_field, request, **kwargs):
    if db_field.name == "comics":
      kwargs["queryset"] = Gig.objects.filter(comic_gig__approved_comic=True)
    return super().formfield_for_manytomany(db_field, request, **kwargs)


admin.site.register(Host)
admin.site.register(Gig, AuthorAdmin)

Вот изображение моей модели хоста в админке

Вот изображение моей модели ComicGig в админке

...