Ich versuche, eine Empfängerliste für send_mail(), die Benutzer mit einer benutzerdefinierten Berechtigung abfragen und sie in der Liste platzieren wird. Der Zweck besteht darin, den Django-Administrator zu verwenden, um es dem Benutzer zu erleichtern, Benutzer in eine Gruppe mit dieser Berechtigung zum Empfangen der E-Mail zu platzieren. Ich erhalte diese more than one row returned by a subquery
. Ich benutze ModelBase, die ein paar Kind-Modelle hat, so dass die benutzerdefinierte Berechtigung es an mehr als ein Modell anfügt. Wie kann ich meinen Code anpassen, um diesen Fehler zu beheben und die Empfängerliste zu erstellen, die ich benötige?Django SubQuery Fehler beim Erstellen einer Empfängerliste für send_mail() basierend auf benutzerdefinierte Berechtigung
Hier sind meine models.py und views.py. Ich entschuldige mich, wenn die Formatierung ausgeschaltet ist, ich wollte die Frage nicht mit unnötigen Informationen überfluten. models.py:
class StoreNightlyReportsBase(models.Model):
store_nightly_report = models.ForeignKey(StoreNightlyReport)
no_new_item = models.BooleanField(verbose_name="Check if No New Items", default=False)
customer = models.CharField(verbose_name='Customer Name', max_length=20, null=True, blank=True)
class Meta:
abstract = True
permissions = (('nightly_reports','Nightly Reports'),
)
class StoreNightlyReportsNewLoan(StoreNightlyReportsBase):
...
class StoreNightlyReportsRenewals(StoreNightlyReportsBase):
...
views.py
class StoresNightlyReportsNewLoansCreate(CreateView):
...
def get_form(self, form_class=None):
...
def get_context_data(self, **kwargs):
...
def form_valid(self, form):
...
perm = Permission.objects.filter(codename='nightly_reports')
users = User.objects.filter(Q(groups__permissions=perm) | Q(user_permissions=perm)).distinct()
recipients = list(i for i in users.values_list('email', flat=True) if bool(i))
html_email = render_to_string('reports/email.html', {
'object': self.object,
'user': self.request.user,
})
send_mail(
'Nightly Numbers',
'Here is the message.',
'[email protected]',
[recipients],
html_message=html_email,
fail_silently=False,
)
return super(StoresNightlyReportsNewLoansCreate, self).form_invalid(form)
Vielen Dank für Ihre Zeit.