我有一个模特班'简讯&#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()
答案 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)