【发布时间】:2021-06-13 22:42:45
【问题描述】:
我有一个e-commerce 开发,我希望从admin 站点向客户发送email,我不能通过queryset 正确执行此操作。我有以下型号:
models.py:
class Orden(models.Model):
cliente = models.ForeignKey(
User, on_delete=models.CASCADE, verbose_name='Usuario')
productos = models.ManyToManyField(OrdenProducto)
fecha_orden = models.DateTimeField(auto_now_add=True)
completada = models.BooleanField(default=False, null=True, blank=True)
id_transaccion = models.CharField(max_length=20, null=True)
correo_enviado = models.BooleanField(default=False, null=True, blank=True)
datos_pedido = models.ForeignKey(
'DatosPedido', on_delete=models.SET_NULL, blank=True, null=True)
pago = models.ForeignKey(
'Pago', on_delete=models.SET_NULL, blank=True, null=True)
cupon = models.ForeignKey(
'Cupon', on_delete=models.SET_NULL, blank=True, null=True)
class Meta:
verbose_name_plural = "Orden"
def __str__(self):
return self.cliente.username
cliente 有一个User 模型的外键,我想获得email 地址,我尝试了很多方法,但就是无法获得。
admin.py:
class OrdenAdmin(admin.ModelAdmin):
list_display = ('cliente', 'completada', 'correo_enviado')
actions = ['enviar_correo']
def enviar_correo(self, request, queryset):
queryset.update(correo_enviado=True)
a = queryset.get(cliente=self.user.email)
send_mail('test', 'test', 'xxxxxx@mail.com',
['a], fail_silently=True)
【问题讨论】:
-
您是否尝试从管理员中的已登录用户获取用户?如果是这种情况,您可以使用 request.user.email 代替 self.user.email
-
不,我正在尝试从客户那里获取电子邮件,这是下订单的那一封
标签: python django django-admin django-queryset django-allauth