gpt4 book ai didi

python - 在 Django 管理员的 change_form 中的两个模型字段之间添加自定义 html

转载 作者:太空狗 更新时间:2023-10-30 01:49:32 25 4
gpt4 key购买 nike

假设我有两个模型:

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)

有没有一种很好的方法可以在图书馆 change_form 模板中的名称和地址之间添加一些 html(只读输入字段)?我正在重写 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)

最佳答案

模型.py:

class Library(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=50)
tel = models.CharField(max_length=50)

def book_count(self):
return self.book_set.count()

admin.py:

class LibraryAdmin(admin.ModelAdmin): 
fieldsets = (
(None, { 'fields': ('name', 'book_count', 'address', 'tel' )}),
)
readonly_fields = ('book_count',)

admin.site.register(Library, LibraryAdmin)

关于python - 在 Django 管理员的 change_form 中的两个模型字段之间添加自定义 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com