gpt4 book ai didi

python - 如何修复 limit_choices_to 不能成为 Django 中的外键?

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:01 24 4
gpt4 key购买 nike

我有一段代码如下:

模型.py
class Notebook(models.Model):
owner = models.ForeignKey(User, on_delete = models.CASCADE)
name= models.CharField(max_length=50)

class Note(models.Model):
create_user = models.ForeignKey(User, on_delete = models.CASCADE)
text=models.CharField(max_length=500)
notebook=models.ForeignKey(Notebook, on_delete = models.CASCADE, limit_choices_to = {'owner' : create_user})
<小时/>

但我收到一条错误,指出 limit_users_to 不能是外键。我希望用户在编写笔记时仅选择他们创建的笔记本,但现在用户可以在未设置 limit_choices_to 的情况下选择其他笔记本。并且笔记本必须是ForeignKey。我能做什么?

最佳答案

创建注释时必须在 View 中执行此操作

表单.py

from .models import Note
from django.forms import ModelForm

class NoteForm(ModelForm):
class Meta:
model = Note

查看.py

from django.views.generic.edit import CreateView
from .form import NoteForm
from .models import Note, Notebook

class NoteCreateView(CreateView):
model=Note
form_class=NoteForm

def get_form(self, form_class=None):
form = super(NoteCreateView, self).get_form(form_class)
# Thats the solution:
form.fields['notebook'].queryset = Notebook.objects.filter(owner=self.request.user)
return form

关于python - 如何修复 limit_choices_to 不能成为 Django 中的外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861946/

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