第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Django:表單驗(yàn)證 - 日期不是過(guò)去的,用戶唯一的日期

Django:表單驗(yàn)證 - 日期不是過(guò)去的,用戶唯一的日期

GCT1015 2023-04-18 14:25:05
我在 Django 中定義表單時(shí)遇到問(wèn)題(python 3.7,django 3.0.8)我創(chuàng)建了一個(gè)模型。這個(gè)模型有兩個(gè)非常重要的字段:date 和 user_id。要求:date和user_id是唯一的。我創(chuàng)建了一個(gè)與模型關(guān)聯(lián)的表單模型。登錄用戶填寫表格,重要的是定義的日期不能是過(guò)去的,也不能出現(xiàn)在數(shù)據(jù)庫(kù)中。我的問(wèn)題:一個(gè)問(wèn)題:我的驗(yàn)證與過(guò)去的日期相關(guān)聯(lián) WORKS CORRECT[!],但如果給出了過(guò)去的日期,則不會(huì)顯示任何錯(cuò)誤消息。第二個(gè)問(wèn)題:第二件事是我不知道如何防止定義數(shù)據(jù),它存在于數(shù)據(jù)庫(kù)中。代碼:模型.pyclass MyModel(models.Model):    user = models.ForeignKey(User, on_delete=models.CASCADE)    date = models.DateField()    ...(other fields)    class Meta:        unique_together = [['user', 'date']]代碼:forms.pyclass AddMyModel(forms.Form):    date = forms.DateField(widget=DateInput(attrs={'type': 'date'}),                           )    def clean_date(self):        date = self.cleaned_data['date']        if date < timezone.now().date():            raise ValidationError("Date cannot be in the past")        return date您是否知道如何設(shè)計(jì)表單以在模板中顯示錯(cuò)誤“日期不能來(lái)自過(guò)去”和錯(cuò)誤“給定日期已定義”?views.pydef add(request):    if request.user.is_authenticated:        user = request.user.id        if request.method == 'POST':            form = AddMyModel(request.POST)            if form.is_valid():                date = form['date'].value()                mymodel= MyModel(user=User(pk=user), date=date)                mymodel.save()                return render(request, 'mysite/successfuladd.html', {"login": True})        form = AddMyModel()        return render(request, 'mysite/add.html', {'form': form, 'login': True})    else:        return render(request, 'mysite/homepage.html', {'login': False})
查看完整描述

2 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

用日期時(shí)間試試這個(gè):


def clean_date(self):

    date = self.cleaned_data['date']

    if date < datetime.date.today():

        raise ValidationError(self.error_messages['Date cannot be in the past'], code='Date cannot be in the past')

    return date


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

我設(shè)法自己解決了這個(gè)問(wèn)題。我的模型是一樣的。


forms.py


class AddMyModel(forms.ModelForm):

    def clean_date(self):

        date = self.cleaned_data['date']

        if date < timezone.now().date():

            raise forms.ValidationError(message='Date cannot be in the past')

        return date


    class Meta:

        model = MyModel

        fields = ('date')

        widgets = {

            'date': forms.DateInput(attrs={'type': 'date'})

        }

views.py


def add(request):

    if request.user.is_authenticated:

        user = request.user.id

        if request.method == 'POST':

            form = AddMyModel(request.POST)

            if form.is_valid():

                date = form['date'].value()

                if MyModel(user=User(pk=user), date=date):

                    unique_error = "User and date is already exist."

                    return render(request, 'mysite/add.html',

                                  {'form': form, 'login': True, 'unique_error': unique_error})

                else:

                    mymodel= MyModel(user=User(pk=user), date=date)

                    mymodel.save()

                    return render(request, 'mysite/successfuladd.html', {"login": True})

            return render(request, 'mysite/add.html',

                          {'form': form, 'login': True})

        form = AddMyModel()

        return render(request, 'mysite/add.html', {'form': form, 'login': True})

    else:

        return render(request, 'mysite/homepage.html', {'login': False})


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 2 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)