Отображение деталей в Django Admin для отношений "многие ко многим
У меня есть модель, в которой есть модель класса журнала и модель класса сессии. Для каждой сессии есть несколько журналов, которые могут быть записаны. Поэтому я создал следующую модель:
class Log(models.Model):
log_workout = models.CharField(max_length = 30, blank=True, null=True)
log_exercise = models.CharField(max_length = 30, blank=True, null=True)
log_order = models.IntegerField(validators=[MinValueValidator(1)],blank=True, null=True)
class ActiveSession(models.Model):
active = models.BooleanField(default=False)
log = models.ManyToManyField(Log)
date = models.DateTimeField(auto_now_add=True,blank=True, null=True)
В админке я пытался использовать inline, чтобы я мог видеть детали каждого журнала в сессии, но он показывает только полный список и выделяет добавленные журналы.
Здесь находится admin.py
class ActiveSessionInline(admin.TabularInline):
model = ActiveSession.log.through
class LogAdmin(admin.ModelAdmin):
model = Log
inlines = [
ActiveSessionInline,
]
Мой вопрос: Могу ли я вместо того, чтобы показывать добавленный журнал на изображении ниже, показывать журналы, которые выбраны, как если бы я просматривал их из LogAdmin, даже если это inline
<
Вернуться на верх
Но:
- Вы не сможете редактировать журналы без дополнительного материала - например, всплывающей формы + js + View для отправки .
original.log.all
содержит только то, что выбрано в данный момент... Вам почти придется либо:- войти в форму из
fieldset
и в цикле перебрать опции поля, чтобы показать все .
- либо вы можете каким-то образом упаковать дополнительные данные в ModelAdmin .
- войти в форму из
admin.py
class LogAdmin(admin.ModelAdmin):
model = Log
inlines = [
ActiveSessionInline,
]
# override template
change_form_template = 'admin/logadmin_change.html'
logadmin_change.html
{% extends "admin/change_form.html" %}
{% block field_sets %}
<!-- Original Field Loop -->
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
<!-- Custom Loop - 'original' is current Model being changed -->
{% for i in original.log.all %}
<div class="selectedLogs" pk="{{i.pk}}">
{{i}} (make better looking tho)
</div>
{% endfor %}
{% endblock %}