是否可以更新字段,在保存字段时,应该保存其他字段并进行新的更改。
例如,我有以下模型,
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
字段旁边的其他字段,以便用户在点击模板中的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()
如何在保存()旁边插入所有字段的实例,以便在将is_approve
设置为True后进行更改。
更新丹尼尔的问题
该模型具有“备份”模型形式。表单通过Django admin(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 %}
答案 0 :(得分:1)
你有几种选择。
首先是在备份模型上覆盖保存方法:
#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 model utils field tracker :
@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