Хотел добавить пользовательское начальное значение из БД, когда изменение хотело добавить начальное значение - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть требование в Django 2.1 admin, форма имеет настраиваемое поле, которое отображается как множественный выбор, когда вызывается добавление формы и когда вызывается изменение формы, тогда ранее выбранное значение должно отображаться как выбранное с помощью javascript. Но я не могу показать уже выбранное значение.

Класс модели

from django.db import models
from django.utils import timezone

# Create your models here.
class Notification(models.Model):
    id = models.AutoField(primary_key=True)
    notif_ty = models.CharField(max_length=24)
    alert_ty = models.CharField(max_length=30)
    scheduler = models.IntegerField(default=0)
    box_ty = models.TextField(verbose_name="Box Type", max_length=200, blank=True, null=True)

Класс администратора

from django.contrib import admin
from django import forms
from django.contrib import messages
from constants import constants
from string import Template
import json
from django.conf import settings

# Register your models here.
from .models import Notification
import logging

logger = logging.getLogger('django')

    class NotificationAdmin(admin.ModelAdmin):
        class Media:
            js = ['admin/js/notification/pn1.js',]

        def formfield_for_dbfield(self, db_field, **kwargs):
            logger.debug("formfield_for_dbfield method get called...")
            field =  super(NotificationAdmin, self).formfield_for_dbfield(db_field, **kwargs)
            # We can't assume that kwargs['initial'] exists!
           if 'initial' not in kwargs:
               kwargs['initial'] = {}

           if db_field.name == 'box_ty':
               logger.debug("fileds name>>>>>>>>> %r " , field)
               field.initial = get_box_types() #'My initial description'

         return field

         def get_changeform_initial_data(self, request):
             logger.debug("get_changeform_initial_data...")
             boxes = get_box_types()
             return {'box_ty': boxes}
     def save_model(self, request, obj, form, change):
         obj_x = Notification.objects.filter(schedule=0)
         ...
def get_box_types():
    """
    This method will return box type list
    """
    boxes = list()
    try:
        logger.debug("get_box_type method...")
        _objects = BoxType.objects.filter(active=1)
        logger.debug("Total active box type object in DB: %r", len(_objects))
        for po in _objects :
            data = {}
            data.update([('id', po.id)])
            data.update([('name', po.name.lower())])
            data.update([('boxTy', po.box_type)])
            boxes.append(data)
        boxes = json.dumps(boxes, default=str).strip("'")
        logger.debug("JSON of box types: %r", boxes)

    except Exception as ex:
        logger.exception(ex)
    return boxes
admin.site.register(Notification, NotificationAdmin)

Теперь проблема в том, что метод formfield_for_dbfield получает вызов add и меняет оба раза. Но невозможно установить ранее выбранное значение.

Если я использую метод formfield_for_dbfield, то он вызывается только один раз, когда добавляется отображение формы при изменении формы.

Пожалуйста, сообщите мне, как установить ранее выбранное значение означает добавленное время, чтобы я мог показать ранее выбранное пользователем значение.

Value shown user as multi select

Теперь, когда пользователь выбирает 2 из 3, пользователь может видеть в качестве выбранного значения ( Разграничены $$$). как показано ниже Delimited by $$$

enter image description here

Теперь я хочу выбрать значение выше. Пожалуйста, ведите меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...