如何在Django中创建以下系统?

2024-10-03 23:23:08 发布

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

我需要一个如下的系统,所以我试图依靠已经编写好的代码。 这些观点并不存在,我试图单独写,但我写不出来。 我是Django的新手,很抱歉我不太懂英语。 提前谢谢

错误

/accounts/segui/2/1/处的值错误<;跟随者:跟随者对象(无)>;实例未保存。使用bulk=False或先保存对象

models.py

from django.db import models
from django.contrib.auth import get_user_model

User = get_user_model()


class Follower(models.Model):
    follower = models.ForeignKey(User, on_delete=models.PROTECT, related_name='following')
    following = models.ForeignKey(User, on_delete=models.PROTECT, related_name='followers')

    class Meta:
        unique_together = ('follower', 'following')

    def __unicode__(self):
        return u'%s segue %s' % (self.follower, self.following)

views.py

def AddFollowerView(request, pk, id):
        user = get_object_or_404(User, pk=pk)
        userFollow = get_object_or_404(User, id=id)
        follower= Follower()
        follower.objects.bulk_create([
            follower(follower=user, following=userFollow),
        ])
        return HttpResponseRedirect('/stories/')

def RemoveFollowerView(request, pk, id):
        user = get_object_or_404(User, pk=pk)
        userFollow = get_object_or_404(User, id=id)
        user.following.remove(Follower(following=userFollow))
        user.following.save()
        return HttpResponseRedirect('/stories/')

url.py

path('follow/<int:pk>/<int:id>/', AddFollowerView, name="add-follower"),
path('not-follow/<int:pk>/<int:id>/', RemoveFollowerView, name="remove-follower"),

如果这个问题被问了好几次,我很抱歉,但我不知道如何解决它


Tags: ornamepyidgetobjectmodelsint
1条回答
网友
1楼 · 发布于 2024-10-03 23:23:08

您在单个模型实例上调用管理器方法,但只能在queryset或未实例化的类上调用管理器方法(抱歉,解释不好,请随意改进)。这可以解释错误AttributeError at /accounts/follow/2/1/ Manager isn't accessible via Follower instances

因此,实际上,删除这些行:

follower = Follower()
follower.objects.bulk_create([follower(follower=user, following=userFollow)])

并替换为:

Follower.objects.create(follower=user, following=userFollow)

或:

follower_object = Follower(follower=user, following=userFollow)
follower_object.save()

相关问题 更多 >