Как настроить админку django - PullRequest
0 голосов
/ 14 апреля 2019

Этот код работает должным образом. Но я хочу, чтобы какая-то форма написала тему и сообщение, чтобы ответить, вместо определения темы сообщения в функции ответа. Как добавить форму ответа для ответа на странице администратора django

admin.py

class ContactAdmin(admin.ModelAdmin):
list_display = ['full_name','email','comment','time']
list_filter = ['time']
search_fields = ['name','comment']
readonly_fields = ['full_name','email','comment','time']
ordering = ['time']
actions = ['reply']

def reply(self,request,queryset):
    for reciever in queryset:
        send_mail('subject','message',settings.EMAIL_HOST_USER,[reciever.email],fail_silently=False)
        messages.success(request,'Your message has been replied successfully.')

1 Ответ

0 голосов
/ 14 апреля 2019

Вы можете сделать это следующим образом: Создать пользовательский шаблон администратора. Скопируйте стандартный шаблон из установки django в каталог yourproject / templates / admin / youapp / yourmodel / change_list.html Замените имена вашего проекта и т. Д. На ваши имена.

class YourAdmin(admin.ModelAdmin):

    change_list_template = 'admin/yourapp/yourmodel/change_list.html'

Затем вы модифицируете этот шаблон в элементе формы (изменения показаны между строками комментария - вставлены только две строки):

      {% block pagination %}{% pagination cl %}{% endblock %}

        <!--Inserted code starts here-->

        <input type="message" name="mail_subject">
        <textarea type="message" name="mail_message"><textarea>

        <!--End of inserted code-->

      </form>

    </div>
  </div>

{% endblock %}

И тогда вы можете получить доступ к значениям этих двух входов в вашем методе действия.

def send_mail(self, request, queryset):
    form_data = request.POST.dict()
    subject= form_data["mail_subject"]
    message = form_data["mail_message"]
    ... and then send your emails
...