Thanks very much. I have solved the problem.

On Sunday, May 20, 2018, Daniel Germano Travieso <danielgtravi...@gmail.com>
wrote:

> Hello!
>
> On your case, as stated on the official doc, you should just create a
> method on the model you want to display the ManyToMany field on the
> list_display that maybe returns the list of items from the ManyToMany
> field. Django avoids using this as it could be a potential overhead as you
> will run seperate queries on the database to fetch all the related
> many-to-many objects.
>
> But if you are feeling adventurous, just create the method that performs
> that query.
>
> i.e. On your Book model you create a method that returns the
> self.authors.all() set. Then you use that method's name on the list_display
> instead of authors.
>
> Hope it helps.
>
> On Saturday, May 19, 2018 at 3:54:17 PM UTC-3, Godson Rapture wrote:
>>
>> Please I am learning Django 2.0.4
>>
>>
>> Right now I am learning about Django Admin.
>>
>>
>> I got an error that the value of my list_display should not be a
>> ManyToMany Field.
>>
>>
>> I referred back to Django official doc and I was asked to create a custom
>> method for my model.
>>
>>
>> I tried looking for an example of how to do that, I could not see.
>>
>>
>> Here is my model.py program
>>
>>  from django.db import models
>>
>> class Publisher(models.Model):
>>     name = models.CharField(max_length=30)
>>     address = models.CharField(max_length=50,blank=True)
>>     city = models.CharField(max_length=60,blank=True)
>>     country = models.CharField(max_length=50,blank=True)
>>     website = models.URLField()
>>     def __str__(self):
>>         return self.name
>>
>> class Author(models.Model):
>>     salution = models.CharField(max_length=10)
>>     first_name = models.CharField(max_length=30)
>>     last_name = models.CharField(max_length=40)
>>     email = models.EmailField()
>>     headshot = models.ImageField(upload_to = "tmp")
>>     def __str__(self):
>>         return f"{self.first_name} {self.last_name}"
>>
>> class Book(models.Model):
>>     title = models.CharField(max_length=100)
>>     authors = models.ManyToManyField(Author)
>>     publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE,)
>>     publication_date = models.DateField()
>>     def __str__(self):
>>         return self.title
>>
>> Here is my admin.py program
>>
>> from django.contrib import admin
>> from polls.models import Book, Publisher, Author
>> # Register your models here.
>>
>> class BookAdmin(admin.ModelAdmin):
>>     list_display = [
>>         "title",
>>         "authors", #a ManyToMany Field
>>
>>     ]
>>      search_fields = [
>>         "Book"
>>     ]
>>     class Meta:
>>         model = Book
>>
>> admin.site.register(Book, BookAdmin)
>>
>> Can someone please help me.
>>
>> Thanks.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/django-users/56c58fb6-7074-47aa-9536-8d8027ef70a0%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/56c58fb6-7074-47aa-9536-8d8027ef70a0%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAEUEpOR37QtBN72gczc9JKteiB5rBryL3vhXP1capNtc1UsLZQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to