Anuj TBE
Anuj TBE

Reputation: 9800

Create multiple related objects in Django Admin

I am using Django 2.0

I have two models

class Chapter(models.Model):
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    name = models.CharField(max_length=250, blank=False)
    created_by = models.ForeignKey(User, on_delete=models.CASCADE)

    class META:
        verbose_name_plural = 'chapters'
        db_table = 'chapters'

    def __str__(self):
        return self.name

class ChapterQuestion(models.Model):
    chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE)
    word = models.CharField(max_length=250)
    definition = models.CharField(max_length=250)

    class META:
        verbose_name_plural = 'chapter questions'
        db_table = 'chapter_questions'

    def __str__(self):
        return self.word

Since Each ChapterQuestion belongs to only one Chapter, I think it could be Many-to-one relation.

My admin.py contain only

admin.site.register(Chapter)
admin.site.register(ChapterQuestion)

I want to be able to add/edit multiple questions while creating/editing chapter using Django Admin.

But Django Admin is showing only chapter fields

enter image description here

Also, I want created_by column to be field automatically by logged in user and remove from form.

Upvotes: 2

Views: 1319

Answers (1)

art
art

Reputation: 1402

You need to use inline forms

class ChapterQuestionInline(admin.StackedInline):
    model = ChapterQuestion

@admin.register(Chapter)
class ChapterAdmin(admin.ModelAdmin):
    list_display = ["course","name","created_by"]
    inlines = [ChapterQuestionInline]

Upvotes: 3

Related Questions