簡體   English   中英

如何在 django 中刪除“不需要此字段”?

[英]How to remove "this field is not required" in django?

我發現有類似問題的帖子,但解決方案似乎不適用於我。 或者,也許我錯過了一些東西。

我在 Django 中創建了一個表單,但默認情況下,似乎每個必填字段都有上面的“此字段是必需的”文本。

理想情況下,我只想在有人嘗試提交表單並且缺少字段時才使用它。

表格.py

class ElderFlowerChampFormAdmin(ModelForm):
    fieldsets=[
            ("Look",{'fields':[
            ('look_colour','look_clarity','look_effervescence')]}),
        }

        widgets = {
                    'user': forms.Select(attrs={'class':'form-control','required':'True'}),
                    'look_colour':forms.Select(attrs={'class':'form-control','required':'True'}),

                }

視圖.py

def elderflowerchamp(request, product_id):
    global ChampageRating
    product = Product.objects.get(pk=product_id)
    url = request.META.get('HTTP_REFERER')
    submitted = False
    try:
        if request.method == "POST":
            reviews = ChampageRating.objects.get(pk=product_id)
            if request.user.is_superuser:
                form = ElderFlowerChampFormAdmin(request.POST, instance=reviews)
                if form.is_valid():
                        form.save()
                        return redirect('home')
            else:
                form = ElderFlowerChampForm(request.POST, instance=reviews)
                if form.is_valid():
                    ChampageRating = form.save(commit=False)
                    ChampageRating.user = request.user
                    ChampageRating.save()
                    return redirect('home')
        else:
            #This part goes to the page, but doesnt submit
            reviews = ChampageRating.objects.get(pk=product_id)
            if request.user.is_superuser:
                form = ElderFlowerChampFormAdmin
            else:
                form = ElderFlowerChampForm
            if 'submitted' in request.GET:
                submitted = True
    except:
        reviews = None
        if request.user.is_superuser:
            form = ElderFlowerChampFormAdmin(request.POST)
            if form.is_valid():
                    data = ChampageRating()
                    data.rating = form.cleaned_data['rating']
                    data.look_colour = form.cleaned_data['look_colour']
                    data.ip = request.META.get('REMOTE_ADDR')
                    data.product_id = product_id
                    data.user_id = request.user.id
                    data.save()
                    messages.success(request, 'Thank you! Your review has been submitted.')
                    return redirect('home')
        else:
            form = ElderFlowerChampForm(request.POST)
            if form.is_valid():
                    data = ChampageRating()
                    data.rating = form.cleaned_data['rating']
                    data.look_colour = form.cleaned_data['look_colour']
                    data.ip = request.META.get('REMOTE_ADDR')
                    data.product_id = product_id
                    data.user_id = request.user.id
                    data.save()
                    messages.success(request, 'Thank you! Your review has been submitted.')
                    return redirect('home')


    return render(request,"main/ElderFlowerReview.html", {'form':form, 'submitted':submitted,'reviews':reviews, 'product':product})

模型.py

LOOKCOLOUR=(
    (1,'Straw'),
    (2,'Yellow'),
    (3,'Gold'),
    (4,'Amber'),
)

class ChampageRating(models.Model):
    user = models.ForeignKey(User,blank=True, on_delete=models.CASCADE)
    product=models.ForeignKey(Product,related_name="champcomments", on_delete=models.CASCADE)
    look_colour=models.IntegerField(choices=LOOKCOLOUR, default=0)
   
    def __str__(self):
        return '%s - %s - %s'%(self.user, self.product, self.date_added)

有任何想法嗎在此處輸入圖像描述

案例request.GET有問題。在這里獲取:

    if request.user.is_superuser:
        form = ElderFlowerChampFormAdmin
    else:
        form = ElderFlowerChampForm

您將FormClass發送到模板上下文,而不是表單實例。

另請參閱異常情況下的錯誤:如果我有一個 GET,我不應該呈現 BoundedForm,這里應該是 form.bounded = false (表單不受任何數據限制)。 但是你總是被設置為BoundedForm ,並在此處出現錯誤后的request.POST數據:

reviews = ChampageRating.objects.get(pk=product_id)

我的意見是-您應該嘗試閱讀有關 Django-GCBV 的信息,這是避免復雜錯誤的更好方法,例如在您的問題中。

https://docs.djangoproject.com/en/4.0/topics/class-based-views/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM