[英]Django admin queryset foreign key to user django-allauth
我有一個e-commerce
開發項目,我希望從admin
站點向客戶端queryset
email
,我無法通過查詢集正確執行此操作。 我有以下 model:
模型.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
客戶有一個User
cliente
的外鍵,我想獲得email
地址,我嘗試了很多方法,但我就是無法獲得它。
管理員.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)
您可以嘗試迭代查詢集以訪問行中的特定數據。
試試下面的代碼。
class OrdenAdmin(admin.ModelAdmin):
list_display = ('cliente', 'completada', 'correo_enviado')
actions = ['enviar_correo']
def enviar_correo(self, request, queryset):
queryset.update(correo_enviado=True)
for obj in queryset:
email = obj.cliente.email
send_mail('test', 'test', email,
['a], fail_silently=True)
我希望這段代碼可以幫助你
Unless you have extended the default user model or have created Your Own user model, django default user model does not have an email field.
因此,如果您擴展或創建了您自己的 model,您可以這樣做
myordenobj.cliente.email
但是,如果您使用的是默認用戶 model 並且您的用戶名是 email,那么請執行此操作。
myordenobj.cliente.username
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.