django - Django 1.11 多对多
问题描述
我在使用 Django 11.1 时遇到问题。我添加了与文件上传的多对多关系,但在管理员中没有发送文件的选项。
在这个系统中我有一个课程的注册信息,我需要发送文件下载。每门课程可能有多个文件,因此是 ManyToMany 接口。
下面是管理员如何显示该字段的图像。
模型.py
class PalestraFile(models.Model):
file = models.FileField(
upload_to=path_and_rename('uploaded_files/palestra/'),
blank=True,
verbose_name="Arquivo da programação",
help_text="(.pdf, .doc, .txt, .png, .jpg)")
class Palestra(Programacao):
palestrante = models.ForeignKey(Palestrante,
null=True,
blank=True,
limit_choices_to={'ativo': True})
palestrantes = models.ManyToManyField(
Palestrante,
related_name='palestra_palestrantes',
blank=True,
limit_choices_to={'ativo': True}
)
file = models.ManyToManyField(
PalestraFile,
related_name='palestra_palestrafiles',
blank=True,
verbose_name="Arquivos da palestra")
class Meta:
verbose_name = 'Palestra'
verbose_name_plural = 'Palestras'
def __str__(self):
return '%s | %s ' % (date(self.dia, "d/m"), self.tema)
管理员.py
from django.contrib import admin
from .models import Palestrante, Palestra, PalestraFile
from .forms import PalestranteFormAdmin
@admin.register(Palestrante)
class PalestranteAdmin(admin.ModelAdmin):
form = PalestranteFormAdmin
list_display = ['nome', 'email', 'slug', 'ativo']
prepopulated_fields = {"slug": ("nome",)}
# actions = ['compress_uploads']
def compress_uploads(self, request, queryset):
for obj in queryset:
obj.save()
compress_uploads.short_description = "Comprimir Imagens de Uploads"
@admin.register(Palestra)
class PalestraAdmin(admin.ModelAdmin):
search_fields = (
'tema',
'palestrante__nome',
'dia',
'evento__nome',
'evento__local'
)
list_display = [
'evento',
'palestrante',
'dia',
'tema',
'sala',
'horario_inicio',
'horario_termino',
'status'
]
filter_horizontal = ['palestrantes']
save_as = True
表格.py
from django import forms
from redactor.widgets import RedactorEditor
from .models import Palestrante
class PalestranteFormAdmin(forms.ModelForm):
class Meta:
model = Palestrante
fields = ['nome', 'slug', 'email', 'foto', 'cargo', 'curriculo', 'linked_in', 'ativo',]
widgets = {
'curriculo': RedactorEditor(),
}
解决方案
推荐阅读
- linux - Linux 设备驱动程序接口
- mysql - 在MYSQL中替换字符串中的多个值
- sql - 使用 Oracle SQL 显示列
- asp.net-core - 在 .Net Core Worker 服务中托管 Web API - 无法引用 IWebHostEnvironment
- windows - Azure DevOps 的 git clone 失败
- java - 错误 org.hibernate.engine.jdbc.spi.SqlExceptionHelper [http-nio-8080-exec-3] (logExceptions:131) [] - 列名无效
- gradle - 在哪里放置凭证在 gradle
- python - 捕捉 ZeroDivisionError
- maven - Maven Central 与其他存储库?
- pdf - 谷歌脚本;不支持从格式 application/octet-stream 到 application/pdf 的转换