我有一段代码如下:
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。 我该怎么办?
答案 0 :(得分:1)
创建笔记时,您必须在视图中执行此操作
form.py
from .models import Note
from django.forms import ModelForm
class NoteForm(ModelForm):
class Meta:
model = Note
view.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