如何解决如果记录存在,则添加新记录
我有一个表单,其中id
是模型UserFileUploadModel
的隐藏字段。提交表单时,我将此信息保存到其他模型DecryptRequestModel
中。但是这里使用的ID来自UserFileUploadModel
,所以当我第二次提交表单时,我得到了错误,
<ul class="errorlist"><li>id<ul class="errorlist"><li>Decrypt request model with this Id already exists.</li></ul></li></ul>
那我该怎么办
HTML表单:-
<form method="post" action="{% url 'decrypt' %}" enctype="multipart/form-data">
{% csrf_token %}
{% for i in objects %}
<input type="hidden" name="id" value="{{i.id}}" readonly> # ID from other table
<input type="text" name="email" value="{{i.filename}}" readonly>
<input type="hidden" name="algorithms" value="{{i.algorithms}}">
{% if i.algorithms == 'BLOWFISH' or i.algorithms == 'AES-256' %}
<input type="text" name="key" required="True" placeholder="Enter the Secret Key">
{% else %}
<input type="file" name="private_key" required/>
{% endif %}
<input type="submit" id="redirect" name="decrypt" value="Download">
{% endfor %}
</form>
View.py:-
def DecryptFile(request):
if 'isloggedin' in request.session:
if request.method == 'POST':
id = request.POST.get('id')
# instance = DecryptRequestModel.objects.get(id=id)
form = DecryptRequestForm(request.POST,request.FILES)
if form.is_valid():
algorithm = form.cleaned_data['algorithms']
print(algorithm)
form.save()
型号:
class DecryptRequestModel(models.Model):
id = models.IntegerField(primary_key=True)
file_name = models.CharField(max_length=200)
algorithms = models.CharField(max_length=200)
key = models.CharField(max_length=200)
private_key = models.FileField(upload_to='UserUploads/Tempfile/')
date_decrypted = models.DateField(auto_Now_add=True,blank=True,null=True)
# file_id = models.ForeignKey('UserFileUploadModel',on_delete=C)
def __str__(self):
return self.algorithms
class Meta:
db_table = "decryption"
class UserFileUploadModel(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200)
email = models.CharField(max_length=200)
class Meta:
db_table = "userfiles"
表格:-
class DecryptRequestForm(forms.ModelForm):
id = forms.IntegerField()
email = forms.CharField(max_length=200)
algorithms = forms.CharField(max_length=200,required=False)
key = forms.CharField(max_length=200,required=False)
private_key = forms.FileField(required=False)
class Meta():
model = DecryptRequestModel
fields = ['id','email','algorithms','key','private_key']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。