Допустим, у меня есть две модели:
class Book(models.Model):
name = models.CharField(max_length=50)
library = models.ForeignKeyField('Library')
class Library(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=50)
tel = models.CharField(max_length=50)
Есть ли хороший способ добавить html (поле ввода только для чтения) между именем и адресом в шаблоне библиотеки change_form ?. Я делаю это, переопределяя admin / includes / fieldset.html , но он становится грязным, и я не могу найти способ отобразить html именно там, где я хочу. Например, если я хочу добавить html, отображающий количество книг, которые есть в библиотеке ниже поля имени, я сделаю это:
{% for field in line %}
...
{% if field.field.name == 'name' %}
{{ field.field }}
<div class="form-row total_books">
<div>
<label for="total_books">Total books:</label>
<input type="text" maxlength="10" name="totbooks" id="totbooks" readonly="readonly">
</div>
</div>
{% else %}
{{ field.field }}
{% endif %}
...
{% endfor %}
Новое решение:
Я нашел более хороший способ, как мне кажется, но я не знаю, почему я получаю эту ошибку: "PresupuestoAdmin.readonly_fields 1 , 'name' не является вызываемым или атрибутом PresupuestoAdmin 'или найдено в модели' Presupuesto '". Кажется, что поле «имя» не добавляется в форму, используемую администратором.
class FoooAdminForm(forms.ModelForm):
name = models.CharField(max_length=100)
class Meta:
model = Foo
class FooAdmin(admin.ModelAdmin):
form = FooAdminForm
fieldsets = (
(None, { 'fields': ('id', 'name', 'date')}),
)
readonly_fields = ('id', 'name')
admin.site.register(Foo, FooAdmin)