gpt4 book ai didi

python - Django 对象不可迭代,为什么?

转载 作者:行者123 更新时间:2023-12-01 02:31:37 25 4
gpt4 key购买 nike

我要显示username如果他点击i want join使用ajax的按钮。我的 html 看起来像这样:

    <div class="who_come">
<form class="form-inline" role="form" method="post" id="joinToEventForm">
{% csrf_token %}
<p align="left"><b ><button type="submit">I want join</button></b></p></b></p>
</form>
{% for u in who_come %}
<p><a href="profile/{{u.visiter}}">{{u.visiter}}</a></p>
{% endfor %}
</div>

我使用此代码来生成我的ajax:

$('#joinToEventForm').on('submit', function(event){
event.preventDefault();
console.log("form submitted!") // sanity check

$.ajax({
type:'POST',
data:{
csrfmiddlewaretoken:'{{ csrf_token }}'
},
success : function () {
alert("You are on Envent")
}
});
});

它的代码可以工作,并写入我需要的数据库,但它返回给我 500 错误代码 TypeError: 'WhoComeOnEvent' object is not iterable 。我不明白出了什么问题

这是我的模型:

class WhoComeOnEvent(models.Model):
visiter = models.ForeignKey(User, related_name='WhoComeOnEvent')
which_event = models.ForeignKey(Topic, related_name='WhoComeOnEvent')

def __str__(self):
return '%s go to %s' % (self.visiter.username, self.which_event.subject)

这是我的观点:

def p(request, pk):
user = request.user
topic = get_object_or_404(Topic, pk=pk)
post = get_object_or_404(Post, pk=pk)
comment = Comments.objects.filter(pk=pk)
who_come = WhoComeOnEvent.objects.filter(pk=pk)
if request.is_ajax():
who_come = WhoComeOnEvent.objects.create(
visiter=user,
which_event=post.topic

)

if request.method == 'POST':
form = CustomCommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = post
comment.creator = user
comment.save()
comment = Comments.objects.create(
body=form.cleaned_data.get('body'),
creator=user,

)
return render(request, 'post.html', {'post': post, 'topic': topic, 'comment': comment,
'form': form, 'who_come': who_come})
else:
form = CustomCommentForm()
return render(request, 'post.html', {'post': post, 'topic': topic, 'comment': comment,
'form': form, 'who_come': who_come})

我使用WhoComeOnEvent.objects.filter ,据我所知它可能是可迭代的。我尝试使用 __iter__这对我没有帮助。我尝试使用 object.filter(...).values() ,但这也没有帮助。我想可能是我在 ajax 功能中犯了错误的逻辑。如果这是个愚蠢的问题,请不要生气,我是第一次使用 ajax。

编辑

我通过替换解决了 500 错误和可迭代问题

{% for u in who_come %}
<p><a href="profile/{{u.visiter}}">{{u.visiter}}</a></p>
{% endfor %}

{% for u in who_come.visiter.all %}
<p><a href="profile/{{u.username}}">{{u.username}}</a></p>
{% endfor %}

但它不显示 html 中用户的链接

最佳答案

如果你看到,如果这个条件成立:

if request.is_ajax()

那么 who_come 将是一个 WhoComeOnEvent.objects.create 对象,但它不是一个可迭代对象!

关于python - Django 对象不可迭代,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46768404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com