You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目Event活动邀请功能无法正确识别目标对象问题咨询

问题根因

  • 原始视图函数仅接收一个id参数,同时用该值查询活动实例和受邀用户实例,必然导致活动ID和受邀用户ID完全一致,所以会把邀请错发给和活动ID相同的用户,多数场景下就是活动创建者本人。
  • 原始代码中get_or_create方法错误传入了request作为第一个参数,该方法仅需传入筛选用的关键字参数,多余参数会触发运行报错。

修复方案

你后续的调整思路是正确的,完整修复需要做两处修改:

  1. 拆分视图参数,同时传入活动ID和受邀用户ID,同步调整URL路由配置
  2. 修正get_or_create的错误传参,优化后代码如下:
# 视图函数
def from_event_to_user_invite_request(request, event_id, profile_id):
    event = Event.objects.get(id=event_id)
    to_profile = Profile.objects.get(id=profile_id)
    # 移除多余的request参数,仅传入筛选条件
    event_invite, created = EventInviteRequest.objects.get_or_create(
        from_event=event,
        to_profile=to_profile
    )
    return redirect('events:event_page', event.id)
# 对应urls.py路由配置调整示例
urlpatterns = [
    # 其他路由不变,新增如下配置,替换原有单参数路由
    path('event/invite/<int:event_id>/<int:profile_id>/', from_event_to_user_invite_request, name='send_event_invite'),
]

可选优化建议

  • 增加权限校验:调用接口前先判断当前登录用户是否为活动创建者,避免任意用户都可以发起活动邀请
  • 增加联合唯一约束:在EventInviteRequest模型中增加from_event和to_profile的联合唯一约束,避免同一个活动向同一个用户重复发送邀请:
class EventInviteRequest(models.Model):
    # 原有字段保持不变
    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['from_event', 'to_profile'], name='unique_event_to_user_invite')
        ]

内容的提问来源于stack exchange,提问作者Saviola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:36:03