Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要Django模型保存方法的帮助吗_Django_Django Models - Fatal编程技术网

需要Django模型保存方法的帮助吗

需要Django模型保存方法的帮助吗,django,django-models,Django,Django Models,需要Django model save()方法的帮助。 如果model save()方法中的某些条件为false,我需要重定向回个人列表页或个人表单。 目前我使用了一个验证错误,但我正在寻找重定向回列表页或表单。如果我使用return语句,总是在不保存的情况下成功添加。 在这里,我需要一个重定向,而不是“raisevalidationerror(u“输入有效名称”) 提前谢谢 贾斯汀 谢谢朋友们的回复, 我在这里添加了我的实际模型类。实际上我没有使用任何自定义表单或自定义验证。我只使用了djan

需要Django model save()方法的帮助。 如果model save()方法中的某些条件为false,我需要重定向回个人列表页或个人表单。 目前我使用了一个验证错误,但我正在寻找重定向回列表页或表单。如果我使用return语句,总是在不保存的情况下成功添加。 在这里,我需要一个重定向,而不是“raisevalidationerror(u“输入有效名称”)

提前谢谢 贾斯汀

谢谢朋友们的回复, 我在这里添加了我的实际模型类。实际上我没有使用任何自定义表单或自定义验证。我只使用了django admin接口。但我在模型类中添加了一个自定义save()方法。在该save()方法中,我对编辑和添加案例做了一些条件。 正确使用save()方法添加数据和编辑数据。但如果条件为false,则我们没有选项重定向回管理员模型类列表或带有错误消息的管理员表单? 在我的示例中,我可以使用任何其他代码来代替raise ValidationError(“错误测试消息”)?。raise ValidationError给出django错误页面。如果我使用重定向或返回,则给出“。。。还添加了关于无数据保存的“成功”消息

有机会吗

我的代码

class Asset(models.Model):
    -----code--------

    class Meta:
        verbose_name_plural= "Employees Assets"         

    def save(self, *args, **kwargs):
        ----- code------

    if self.pk is not None:
        ++++++++++ some code +++++++++++

        if self.hardware.hardware_status == 0 and edit_flag == 2:
            ++++++++++ some code +++++++++++
        elif self.hardware.hardware_status == 1 and edit_flag == 1:
            ++++++++++ some code +++++++++++
        elif (self.hardware.hardware_status == 0 or self.hardware.hardware_status == -1) and   edit_flag == 1:
            ++++++++++ some code +++++++++++    
        elif self.hardware.hardware_status == -1 and edit_flag == 2:
            raise ValidationError('Cant modify Hardware, Hardware status is Lost ')
        else:
            raise ValidationError('Cant modify Hardware, Hardware already assigned to other staff') 

        self.hardware.save()
            super(Asset, self).save(*args, **kwargs) 

    else:
        if self.hardware.hardware_status == 0:
            ++++++++++ some code +++++++++++        
        else:
            raise ValidationError(u'Can't assign, Hardware not available(Lost/Alreday Assigned) for assignment')

    self.hardware.save()
    super(Asset, self).save(*args, **kwargs)


    def  __unicode__(self):
        return u'%s Hardware information for %s' % (self.hardware, self.employee)

这完全是一个错误的地方。模型故意不知道有关请求的任何信息。无法从保存方法重定向,您不应该尝试实现一个。您的视图负责运行验证和适当的重定向。

这完全是一个错误的地方。模型,仔细考虑y、 不知道有关该请求的任何信息。无法从保存方法重定向,您不应该尝试实现一个。您的视图负责运行验证并在适当时重定向。

尝试在管理中自定义验证:

forms.py:

class PersonAdminForm(forms.Form):
    class Meta:
    model = Person

    def clean_first_name(self):
        if self.first_name == "":value )
            raise ValidationError(u"Enter a valid name")
        else
            return self.clean_first_name["first_name"]
admin.py:

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name')]
    form = PersonAdminForm

检查此链接

尝试在管理员中自定义验证:

forms.py:

class PersonAdminForm(forms.Form):
    class Meta:
    model = Person

    def clean_first_name(self):
        if self.first_name == "":value )
            raise ValidationError(u"Enter a valid name")
        else
            return self.clean_first_name["first_name"]
admin.py:

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name')]
    form = PersonAdminForm

选中此链接

模型不执行重定向。这意味着,重写模型保存方法在这里没有什么用处。这是表单验证的一个非常直接的例子,因此,您必须在forms.py中使用以下内容


视图负责表单重定向,因此,只需在表单中编写代码。

模型不执行重定向。这意味着,重写模型保存方法在这里没有什么用处。这是表单验证的一种非常直接的情况,因此,您必须在forms.py中使用下面的方法


您的视图正在为您处理表单重定向,因此,只需在表单中编写代码。

亲爱的,我修改了我的问题,请看一看,我需要从我的模型中重定向/返回else条件。class save()方法亲爱的我修改了我的问题,请看一看,我需要从我的模型中重定向/返回else条件。class save()方法请看一看我编辑的问题。因此,我在model class save()中没有重定向选项方法。我只需要重定向回表单或在else条件中列出,而不是raise ValidationError。raise ValidationError提供django错误页。我正在寻找重定向回表单或带有错误消息的列表。如果我使用return或redirect,则提供“。。。“在其他情况下成功添加”alsoI根本无法理解您的代码,但这正是为什么您应该在保存之前使用验证-可能是在表单中-而不是尝试在save方法中完成所有操作的原因。谢谢Dani,所以我相信,我们在模型类save()方法中没有重定向选项。让我尝试在表单中执行,而不是在save()中执行方法。在我的代码模型类save()方法中,我在某些条件下尝试重定向回管理表单。谢谢请查看我编辑的问题。因此,我在模型类save()中没有重定向选项方法。我只需要重定向回表单或在else条件中列出,而不是raise ValidationError。raise ValidationError提供django错误页。我正在寻找重定向回表单或带有错误消息的列表。如果我使用return或redirect,则提供“。。。“在其他情况下成功添加”alsoI根本无法理解您的代码,但这正是为什么您应该在保存之前使用验证-可能是在表单中-而不是尝试在save方法中完成所有操作的原因。谢谢Dani,所以我相信,我们在模型类save()方法中没有重定向选项。让我尝试在表单中执行,而不是在save()中执行在我的代码模型类save()方法中,我尝试在某些条件下重定向回admin表单。谢谢