我有一段代码如下:
模型.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/