Как сделать обязательные поля необязательными в форме django для суперпользователя? - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь сделать обязательное поле формы необязательным для суперпользователя в моем проекте.Но я застрял, потому что я не знаю, как это сделать.Я хочу использовать логическое значение is_super для обязательного поля, когда суперпользователь нажимает на обязательное поле is_super.

Спасибо

Вот снимок экрана поля формы: enter image description here

Вот мой код для form.py

class TrackerForm(forms.ModelForm):

    is_super = forms.BooleanField()
    class Meta:
        model = Tracker
        fields = ('is_super','cascade','Date','Technology', 'Type', 'Bandwidth_Checked_From_LSM', 'Market', 'eNB', 'LSM', 'CSMS', 'FE_Name', 'Mode_of_Communication', 'Activity', 'Activity_status', 'Site_Status_pre_Activity', 'Site_Status_post_Activity','E_Link_Status_of_BH0_for_CDU30','MJ_Object_Marked','RET','Alarms_Preventing_RET_Config','Frequency_Earfcn_Checked_from_LSM_BSM','IP_Route_or_IP_Address','Volte_MME_IP_Config','Review_LATP_Complete','Remarks','OAR_Date','OAC_Date','Lock_Unlock_Verified_By','Verify_Status','Final_Comments')

`

View.py:

@login_required
def tracker_new(request):
    if request.method == "POST":
        form = TrackerForm(request.POST)

        if form.is_valid():
            tracker = form.save(commit=False)
            tracker.admin = request.user
            tracker.created_date = timezone.now()
            tracker.save()
            return redirect('tracker_detail', pk=tracker.pk)
    else:
        form = TrackerForm
        return render(request, 'tracker/tracker_edit.html', {'form': form})

Model.py:

admin = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,default='')

        cascade = models.CharField(max_length=255, default='')
        Technology_CHOICES1 = (
                ('800', '800'),
                ('1900', '1900'),

        )

        Technology = models.CharField(max_length=255, choices=Technology_CHOICES1)

        Type_CHOICES8 = (
                ('CDU10', 'CDU10'),
                ('CDU20', 'CDU20'),
                ('CDU30', 'CDU30'),
                ('NA', 'NA'),
        )

        Type = models.CharField(max_length=255, choices=Type_CHOICES8)

        Bandwidth_Checked_From_LSM_CHOICES10 = (
                ('3', '3'),
                ('5', '5'),
                ('10', '10'),
                ('NA', 'NA'),
        )

        Bandwidth_Checked_From_LSM = models.CharField(max_length=255, choices=Bandwidth_Checked_From_LSM_CHOICES10)

        market = (
                ('Kansas', 'Kansas'),
                ('Alaska', 'Alaska'),
                ('PR / VI', 'PR / VI'),


        )

        Market = models.CharField(max_length=255, choices=market)


        eNB = models.CharField(max_length=255, default='')
        LSM = models.CharField(max_length=255, default='')
        CSMS = models.CharField(max_length=255, default='')
        FE_Name = models.CharField(max_length=255, default='')


        Mode_of_Communication_CHOICES6 = (
                ('Whatsapp', 'Whatsapp'),
                ('Primary Bridge', 'Primary Bridge'),
                ('Secondary Bridge', 'Secondary Bridge'),
                ('IM', 'IM'),
                ('E-Mail', 'E-Mail'),
        )

        Mode_of_Communication = models.CharField(max_length=255, choices=Mode_of_Communication_CHOICES6)


        Activity_CHOICES2 = (
                ('C&I', 'C&I'),
                ('Troubleshoot', 'Troubleshoot'),
                ('LATP Testing', 'LATP Testing'),

        )

        Activity = models.CharField(max_length=255, choices=Activity_CHOICES2)

        Activity_status_CHOICES3 = (
                ('Open', 'Open'),
                ('Close', 'Close'),
                ('Handover', 'Handover'),
        )

        Activity_status = models.CharField(max_length=255, choices=Activity_status_CHOICES3,)

1 Ответ

1 голос
/ 29 марта 2019

Я бы предложил, основываясь на статусе вошедшего в систему пользователя (независимо от того, является он пользователем или нет), вернуть другую форму.Возможно, вы захотите применить соответствующие условия в бэкэнде (то есть в tracker_new) и, возможно, во внешнем интерфейсе.

Редактировать: вы также можете использовать портал администратора для формы special

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