Встроенная в админку Django кнопка «Добавить еще» не работает - PullRequest
0 голосов
/ 12 июня 2018

Попытка выучить сложенные строки в Django.Имеют очень простую настройку

Для admin.py

from django.contrib import admin

from .models import Picture, Review


class ReviewInline(admin.StackedInline):
    model = Review
    save_on_top = True
    fields = ["reviewer"]

#@admin.register(Picture)
class PictureAdmin(admin.ModelAdmin):
    save_on_top = True
    fields = ["painter"]
    inlines = [ReviewInline,]


admin.site.register(Review)
admin.site.register(Picture, PictureAdmin)

Для models.py

from django.db import models

class Picture(models.Model):
    painter = models.CharField(("painter"), max_length=255)
    def __str__(self):
        return self.painter


class Review(models.Model):
    picture = models.ForeignKey(Picture, on_delete=models.CASCADE)
    reviewer = models.CharField( max_length=255)
    extra = 0
    def __str__(self):
        return self.reviewer

Here is a picture

Как видно, кнопки «добавить еще» нет.Я думаю, что это может быть проблема JS, но я не уверен (у меня действительно включен JS в браузере)

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Очистка моего кеша Google Chrome решила это!Я понял, что пример работает в Microsoft Edge.

0 голосов
/ 12 июня 2018

Я полагаю, у вас есть extra=0 в неправильном классе, он должен быть в Inline, а не в Model ...

Удалить extra=0 из модели

class Review(models.Model):
    picture = models.ForeignKey(Picture, on_delete=models.CASCADE)
    reviewer = models.CharField( max_length=255)

    # extra = 0     <---- remove this

    def __str__(self):
        return self.reviewer

Добавьте его в строку:

class ReviewInline(admin.StackedInline):
    model = Review
    save_on_top = True
    extra = 0
    fields = ["reviewer"]

Обоснование происходит из этого фрагмента из этого примера :

@admin.register(Painter)
class PainterAdmin(admin.ModelAdmin):
    save_on_top = True
    fields = ["name"]
    inlines = [PictureInline]


class ReviewInline(admin.StackedInline):
    model = Review
    extra = 0
    fields = ["reviewer", "comment"]

Редактировать: Вторая мысль, вы также можете избавиться от save_on_top из встроенного?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...