Django intermediate M2M a[href]未将数据保存到数据库

2024-05-13 23:19:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django(社交平台)的项目中工作,用户可以创建组供其他用户加入或离开。你知道吗

这是我的第一个Django项目,我不确定加入和离开组逻辑的实现是否正确。我有一个join按钮,它是a[href]标记:

<a href="{% url 'join' group.id %}" class="btn btn-primary">Join Group</a>

单击它可以将用户添加到组中。以下是模型和视图:

型号.py:

@python_2_unicode_compatible
class Group(models.Model):
    title = models.CharField(max_length=255, null=False, unique=True)
    description = models.TextField(max_length=2000, null=False)
    location = models.CharField(max_length=255, null=False)
    date = models.DateTimeField(auto_now_add=True)
    creator = models.ForeignKey(User, related_name="creator")
    members = models.ManyToManyField(User, through='Membership')
    counter = models.IntegerField(blank=False, null=True)

@python_2_unicode_compatible
class Membership(models.Model):
    person = models.ForeignKey(User)
    group = models.ForeignKey(Group)
    date_joined = models.DateField(auto_now_add=True)

视图.py:

@login_required
def group(request, pk):
    group = get_object_or_404(Group, pk=pk)
    return render(request, 'group/group.html', {'group': group})


@login_required
def join(request, pk):
    _group = get_object_or_404(Group, pk=pk)
    membership = Membership()
    membership.group = _group
    membership.person = request.user
    membership.save()
    return group(request, pk)

用户不会保存到成员资格表。最好的方法是什么?任何帮助都将不胜感激。你知道吗

还尝试了join按钮的查看功能:

@login_required
def join(request, pk):
    _group = get_object_or_404(Group, pk=pk)
    membership = Membership.objects.create(user=request.user, group=_group)
    membership.save()
    return group(request, pk)

网址:

urlpatterns = [
    url(r'^$', views.groups, name='groups'),
    url(r'^all/$', views.all, name='all'),
    url(r'^create_group/$', views.CreateGroup.as_view(), name='create_group'),
    url(r'^(\d+)/$', views.group, name='group'),
    url(r'^(\d+)/$', views.join, name='join'),
]

Tags: 用户namefalsetrueurlmodelsrequestgroup
1条回答
网友
1楼 · 发布于 2024-05-13 23:19:16

解决了这个问题。立即使用窗体

<form role="form" method="post" action="{% url 'join' %}" onsubmit="return true">
        {%csrf_token %}
        <input type="hidden" name="group_id" value="{{ group.id }}">
        <input type="submit" value="Join Group">

加入url为:

url(r'^join/$', views.join, name='join')

相关问题 更多 >