有人可以帮忙吗?以django形式向所有用户或部分用户发送通知

Can someone help? Sending notifications to all users or some users in django forms

我想向多个用户或所有用户发送一条通知消息。我已经尝试了很多字段,但发送到 id 不会保存我已将消息发送到的用户的 i.d。

Models.py

class Notifications(models.Model):
    id=models.AutoField(primary_key=True)
    sent_to = models.ManyToManyField(CustomUser)
    message = models.TextField(null=True)
    message_reply = models.TextField(null=True)
    created_at=models.DateTimeField(auto_now_add=True)
    updated_at=models.DateTimeField(auto_now=True)

Views.py

def add_notification(request):

    notifs = Notifications.objects.all()
    users = CustomUser.objects.filter(is_staff=True)

    if request.method == 'POST':
        form = AddNotifForm(request.POST)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.message_reply = "none"
            instance.save()
            sent_to = form.cleaned_data.get('sent_to')
            messages.success(request, f'Message has been successfully sent .')
            return redirect('add_notif')
    else:
        form = AddNotifForm()

    context={

        'notifs' : notifs,
        'form' : form,
        'users' : users,
    }

    template_name ='main-admin/add-notif.html'
    return render(request, template_name, context)

Forms.py

class AddNotifForm(forms.ModelForm):

    sent_to = forms.ModelMultipleChoiceField(
            queryset=CustomUser.objects.filter(is_staff=True).exclude(is_superuser=True),
            widget=forms.CheckboxSelectMultiple,
            required=True)

    class Meta: 
        model = Notifications
        fields = ['sent_to', 'message']

来自docs

every time you save a form using commit=False, Django adds a save_m2m() method to your ModelForm subclass. After you’ve manually saved the instance produced by the form, you can invoke save_m2m() to save the many-to-many form data.

因此,如果您使用 commit=False:

,则必须在 instance.save() 之后调用 save_m2m()
        instance = form.save(commit=False)
        instance.message_reply = "none"
        instance.save()
        form.save_m2m() # <-- Add this