繁体   English   中英

更新模型字段和Django中的任何其他字段

[英]Update model field and any other fields in django

是否可以更新字段,并且在保存时应使用其他更改保存其他字段。

例如,我有以下模型,

class Backup(models.Model):
    user=models.ForeignKey(User)
    title=models.CharField(max_length=200)
    is_approve=models.BooleanField(default=False)
    is_bad=models.BooleanField(default=False)
    country=models.CharField(max_length=100)

现在,我的主要目的是使is_approve字段为True 我的第二个目的是在is_approve字段旁边更新其他字段, is_approve用户在单击模板中的approve按钮之前进行更改。

    @staff_member_required
    def activate_moderation(request, backup_id=None):
        if id:
           vpostmod=get_object_or_404(Backup, id=backup_id)
           vpostmod.is_approve =1
           vpostmod.save()

如何将所有字段的实例与save()一起插入,以便在将is_approve设置为True之后进行更改。

更新丹尼尔的问题

该模型具有“备份” ModelForm。 表单是通过Django管理员(BackupAdmin)使用相同的“备份”模型表单呈现的。

我通过调用admin / app_name / modelname /文件夹中的change_form位置来传递按钮链接。

    def render_change_form(self, request, context, *args, **kwargs):
        backup= self.get_object(request, self.backup_id)
        context.update({'backup':backup})
        return super(BackupAdmin, self).render_change_form(request, context, *args, **kwargs)

更改表单模板是这样的:

  {% block submit_buttons_bottom %}
        <div class="submit-row">
         {% if backup.is_approve %} 
            <p>pass</p>
         {% else %}
           <a href="{% url 'activate_moderation' backup.id %}" class="historylink"> <input type="button" value="{% trans 'Approve' %}" name="_approvebutton" /></a>
           <input type="button" value="{% trans 'Reject' %}" name="_rejectbutton" />
          {% endif %}
        </div>
{{ block.super }}
{% endblock %}

你有几种选择。

第一个是在备份模型上覆盖保存方法

#Backup
def save(self, *args, **kwargs):
    if self.pk:
        previous_Backup = Backup.objects.get(self.pk).is_approve
    super(Backup, self).save(*args, **kwargs)
    if self.pk and self.is_approve != previous_Backup:
        #make changes

第二个是绑定功能,用于发布保存信号+ Django模型utils字段跟踪器

@receiver(post_save, sender=Backup)
def create_change_backup(sender,instance, signal, created, **kwargs):
    if created:
        previous_Backup = get it from django model utils field tracker
        #make changes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM