gpt4 book ai didi

django - 'ManyToManyDescriptor'对象在django 2中没有属性'all'

转载 作者:行者123 更新时间:2023-12-02 00:59:24 31 4
gpt4 key购买 nike

这是我的forms.py:

class NewsletterCreationForm(forms.ModelForm):
class Meta:
model = Newsletter
fields = ['subject', 'body', 'email', 'status']

这是我的,这是我的通讯模型:
class Newsletter(models.Model):
EMAIL_STATUS_CHOICES = (
('Draft', 'Draft'),
('Published', 'Published')
)
subject = models.CharField(max_length=256, default='')
body = models.TextField(default='')
email = models.ManyToManyField(NewsletterUsers)
status = models.CharField(max_length=16, choices=EMAIL_STATUS_CHOICES)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

def __str__(self):
return self.subject

这是我的views.py:
def control_newsletter_delet(request, pk):
newsletter = get_object_or_404(Newsletter, pk=pk)

if request.method == 'POST':
form = NewsletterCreationForm(request.POST, instance=Newsletter)

if form.is_valid():
newsletter.delete()
return redirect('control_newsletter_list')

else:
form = NewsletterCreationForm(instance=newsletter)

context = {
'form': form,
}

return render(request, 'control_panel/control_newsletter_delete.html', context)

现在,当我想使用control_newsletter_delet()时,我会遇到此错误:
'ManyToManyDescriptor' object has no attribute 'all'

我检查了此链接:
'ManyToManyDescriptor' object has no attribute 'all'
它不能帮助我解决我的问题。
有谁知道我为什么会收到这个错误?
另外,对于我在问题中写错了我感到抱歉。

最佳答案

问题在于该表单不适用于newsletter实例,但适用于Newsletter(带有大写字母)类:

def control_newsletter_delet(request, pk):
newsletter = get_object_or_404(Newsletter, pk=pk)
if request.method == 'POST':
form = NewsletterCreationForm(request.POST, instance=newsletter)
if form.is_valid():
newsletter.delete()
return redirect('control_newsletter_list')

else:
form = NewsletterCreationForm(instance=newsletter)

context = {
'form': form,
}

return render(request, 'control_panel/control_newsletter_delete.html', context)

话虽这么说,在这里使用表格并没有多大意义:您想删除 Newsletter,而 pk已经确定了新闻简报的内容,因此我们可以省略表格。特别是因为它是“创建”形式:
def control_newsletter_delet(request, pk):
newsletter = get_object_or_404(Newsletter, pk=pk)
if request.method == 'POST':
newsletter.delete()
return redirect('control_newsletter_list')

form = NewsletterCreationForm(instance=newsletter)
context = {
'form': form,
}
return render(request, 'control_panel/control_newsletter_delete.html', context)
form可能会完全省略。

关于django - 'ManyToManyDescriptor'对象在django 2中没有属性'all',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51673267/

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