簡體   English   中英

Django 管理員查詢設置外鍵到用戶 django-allauth

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM