在django Admin中保存和保存数据之前,有些工作正常吗?

时间:2015-03-17 10:55:53

标签: python django django-models django-admin

我有一个模特班'简讯&#39 ;.其中可以选择发送给学生,教师等。

我希望获得用户选择的所有学生或教师的电子邮件,然后按下保存按钮后,获取当前保存的简报的ID以及所选择的学生或教师的所有电子邮件,并将其保存到另一个名为email的表中日志。

所有这些工作都是在django的管理面板上完成的。

class newsletter(models.Model):
    newsletter_id = models.AutoField(primary_key=True)
    subject = models.CharField(max_length=512)
    content = RichTextField()
    send_to_choice = {('0', 'None'), ('1', 'Student'), ('2', 'Teacher')}
    send_to = models.CharField(max_length=128, choices=send_to_choice, default='None')
    created_on = models.DateTimeField(auto_now_add=True)
    created_by = models.EmailField(max_length=254)
    updated_on = models.DateTimeField(auto_now_add=True)
    updated_by = models.EmailField(max_length=254)

当管理员选择一个选项时,应激活一个查询并显示所选的所有电子邮件。我知道查询,但没有查询。知道如何在django管理面板上实现这一点。

更新:

我写了这个简单的函数用于测试,如果它执行,那么添加我的逻辑。

def save_model(self, request, obj, form, change):
    obj.save()
    if not change:
        if obj.send_to == '1':
            messages.success(request, 'MyModel was saved!.')
            obj.created_by = 'abc@gmail.com'
    if obj.send_to == '1':
            messages.success(request, 'MyModel was saved!.')
            obj.created_by = 'abc@gmail.com'
    obj.save()

1 个答案:

答案 0 :(得分:2)

您必须覆盖ModelAdmin.save_model()方法:

class NewsletterAdmin(admin.ModelAdmin):

    def save_model(self, request, obj, form, change):
        obj.save()
        if not change: # newly created newsletter
            if obj.send_to == '1':
                for student in Student.objects.all():
                    EmailLog.objects.create(student=student, newsletter=obj)
            elif obj.send_to == '2':
                for teacher in Teacher.objects.all():
                    EmailLog.objects.create(teacher=teacher, newsletter=obj)