微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果记录存在,则添加新记录

如何解决如果记录存在,则添加新记录

我有一个表单,其中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>

那我该怎么办

  1. 让Django处理DecryptRequestModel的ID,每次提交时ID都会递增。 OR
  2. 直接更新上一个条目,其中只有一个字段会更改。

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?