【问题标题】:How to make Required fields optional in django form for super user?如何在 Django 表单中为超级用户设置必填字段可选?
【发布时间】:2019-03-11 21:45:22
【问题描述】:

我正在尝试为我的项目中的超级用户设置必填表单字段。 但我被困住了,因为我不知道该怎么做。当超级用户点击“is_super”必填字段时,我想为必填字段设置“is_super”布尔值。

谢谢

这是表单字段的屏幕截图:

这是我的 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')

`

查看.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})

模型.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,)

【问题讨论】:

    标签: python django python-3.x postgresql


    【解决方案1】:

    我会建议,根据登录的用户状态(他/她是否是超级用户)返回不同的表单。 您可能还想在后端(即 tracker_new 中)强制执行适当的条件,也可能在前端强制执行。

    编辑:您还可以使用 特殊 表单的管理门户

    【讨论】:

      猜你喜欢
      • 2011-12-02
      • 2017-07-18
      • 2018-08-28
      • 2015-11-13
      • 1970-01-01
      • 2021-04-14
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多