亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django TypeError:字段“id”需要一個數字

Django TypeError:字段“id”需要一個數字

守著星空守著你 2023-10-31 14:39:54
我一直在嘗試允許員工用戶將作業發布到數據庫,但是我不斷遇到上述問題。我嘗試過設置data['id'] = 0/''以及刪除表和 makemigrations/migrate。models.pyfrom django.db import modelsfrom teachers.models import Teacherclass Homework(models.Model):  title = models.CharField(max_length=100)  descripiton = models.CharField(max_length=500)  due = models.DateField()  teacher = models.OneToOneField(      Teacher, null=True, blank=True, on_delete=models.CASCADE)  def __str__(self):    return self.titleform.pyfrom django import formsclass DateInput(forms.DateInput):    input_type = 'date'class HomeworkForm(forms.Form):    title = forms.CharField(label='Title', max_length=100)    descripiton = forms.CharField(label='Descripiton', max_length=500)    due = forms.DateField(label='Due', widget=DateInput)views.pydef homework(request):    if request.user.is_authenticated & request.user.is_staff:        if request.method == 'POST':            data = request.POST.copy()            data['teacher'] = request.user.username            request.POST = data            print(request.POST)            form = HomeworkForm(request.POST)            if form.is_valid():                post = Homework(form)                post.save()                messages.info(request, 'Form sent')                print('worked')                return render(request, 'index/index.html')            else:                print('error in form')                form = HomeworkForm()                return render(request, 'dashboard/setHomework.html', {'form': form})        else:            form = HomeworkForm()            return render(request, 'dashboard/setHomework.html', {'form': form})    else:        return redirect('index')
查看完整描述

3 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

您是否嘗試使用 data['teacher'] = request.user 而不是 data['teacher'] = request.user.username ?



查看完整回答
反對 回復 2023-10-31
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

你不需要使用request.POST.copy(),request.POST已經是一本字典了。



查看完整回答
反對 回復 2023-10-31
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

我很欣賞這些答案。我設法通過將表單轉換為模型表單來解決這個問題,因為該表單模型更適合這種情況,因為模型字段直接映射到輸入。


新形式.py


from homework.models import Homework

from django import forms


class HomeworkForm(forms.ModelForm):

    class Meta:

        model = Homework

        fields = ['title', 'description', 'due']

        widgets = {

            'due': forms.DateInput(format=('%m/%d/%Y'), attrs={'label': 'due date', 'type': 'date'}),

        }


查看完整回答
反對 回復 2023-10-31
  • 3 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號