关于django,每个用户信息保存到数据库

时间:2014-04-25 03:53:18

标签: django

我想每天保存每个用户的数据库考勤数据,

但我没有错误没有保存为什么?请帮我 这是我的完整代码:

这是我的views.py:

def staffs(request):
    args = {}
    args.update(csrf(request))
    args['staffs'] = User.objects.all()
    return render_to_response("staffs.html", args)

def staffdetail(request, user_id=1):
    user = get_object_or_404(User, pk=user_id)
    return render_to_response("staffdetail.html",
                         {"user": User.objects.get(id=user_id) })

def attendance(request, user_id):
    if request.method == "POST":
        attendance = Attendance_data(user = request.user.id)
        form = AttendancekForm(request.POST, instance = attendance)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/articles/get/%s' % user.id)
    else:
        form = AttendanceForm()
    return render_to_response('attendance.html', context_instance = RequestContext(request, {'form': form}))

def leave_work(request, user_id):
    if request.method == "POST":
        leave_work = Leave_work(user = request.user.id)
        form = Leave_workForm(request.POST, instance = leave_work)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/articles/get/%s' % user.id)
    else:
        form = Leave_workForm()
    return render_to_response('leave.html', context_instance = RequestContext(request, {'form': form}))

所以,我也在这里添加我的models.py和forms.py 这是我的models.py:

class User(models.Model):
    user_name = models.CharField(max_length=255)
    first_kana = models.CharField(max_length=255)
    last_kana  = models.CharField(max_length=255)
    employee_number = models.CharField(blank=True, max_length=22)
    created_at = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return self.user_name

class Attendance_data(models.Model):
    user_name = models.CharField(max_length=255)
    employee_number = models.CharField(blank=True)

    def __unicode__(self):
        return self.user_name, employee_number

class Leave_work(models.Model):
    user_name = models.CharField(max_length=255)
    employee_number = models.CharField(blank=True, max_length=22)

    def __unicode__(self):
        return self.user_name, employee_unmber

这是我的forms.py:

class ArticleForm(forms.ModelForm):

    class Meta:
        model = User
        fields = ('user_name','first_kana', 'last_kana', 'employee_number')
    user_name = forms.CharField( label="name",error_messages={'required': ''})
    first_kana = forms.CharField(label="firstname",error_messages={'required': ''})
    last_kana = forms.CharField(label="lastname",error_messages={'required': ''})
    employee_number = forms.CharField(label="number", required=False)

class Attendance_dataForm(forms.ModelForm):

    class Meta:
        model = Attendance_data
        fields = ('user_name','employee_number')

    user_name = forms.CharField(label="name", error_messages={'required': ''})
    employee_number = forms.CharField(label="number",error_messages={'required': ''})

class Leave_workForm(forms.ModelForm):

    class Meta:
        model = Leave_work
        fields = ('user_name', 'employee_number')
    user_name = forms.CharField(label="name", error_messages={'required': ''})
    employee_number = forms.CharField(label="number", error_messages={'required': ''})

1 个答案:

答案 0 :(得分:1)

你在意见中做了很多错事。如果查看模型Attendence_data,它有两个字段user_name和employee_number。所以它的构造函数会接受两个参数,user_nameemployee_number或任何其他设置为不为NULL并且没有默认值的字段,因此将request.user.id传递给它的构造函数不会它是一个有效的对象。 Leave_work模型的情况也是如此。因此,如果您需要执行此操作,则需要重载默认构造函数。 但似乎你无法理解Django如何工作的基本概念,所以我建议你去通过this教程,因为这将清除很多基本概念。