Ok I'm trying to do something which should be very simple in my mind but I am probably missing some SQL or django admin knowledge to get to it. Say I have a simple model such as
class Book(models.Model):
title = models.CharField(max_length = 50)
review = models.TextField()
and I want the 'review' field in the admin site to have a little plus sign to add more reviews to the same model instance for the template to iterate through them.
I know I could create a m2m field for the reviews and it would give me just that, but I would rather like that those extra reviews could be filled from the same page without popups (for my helpless users i would like to keep it as WSIWYG as possible, since those textfields will be tinyMCE powered), and I wonder if it's really necessary to create an extra model just for a textfield
str function in a django model returns a string that is exactly rendered as the display name of instances for that model.
Do Django models support multiple-column primary keys? ¶ No. Only single-column primary keys are supported.
To create multiple records based on a Django model you can use the built-in bulk_create() method. The advantage of the bulk_create() method is that it creates all entries in a single query, so it's very efficient if you have a list of a dozen or a hundred entries you wish to create.
Create a Review
model which holds the review text and has a ForeignKey
to Book
...
class Book(models.Model):
title = models.CharField()
class Review(models.Model):
book = models.ForeignKey(Book, related_name='reviews')
review = models.TextField()
...then register the appropriate type of InlineModelAdmin
to edit all the related reviews on the Book's page in the admin. I'd suggest using a StackedInline
in this case:
class ReviewInline(admin.StackedInline):
model = Review
class BookAdmin(admin.ModelAdmin):
inlines = [
ReviewInline,
]
The documentation has an example of almost this exact scenario, except for multiple authors instead of multiple reviews:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With