【发布时间】:2017-10-21 09:42:12
【问题描述】:
我有如下代码片段:
models.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 的情况下选择其他笔记本。 并且笔记本必须是外键。 我能做什么?
【问题讨论】:
-
在我看来,这个限制应该在表单级别而不是模型中完成。因为它取决于请求(登录用户)。如果
owner和create_user相同,create_user也看起来像不必要的字段。 -
为什么 Note.notebook FK 会指向用户?而不是笔记本?在任何情况下,如果您有两个 FK 指向同一个模型(此处为 User),则指定 FK 的 related_name 属性。见:stackoverflow.com/questions/583327/…
-
@anupsabraham 你能给我举个例子,我怎样才能在表单级别做出这样的限制?
-
@PalashBauri 我现在不明白你的模型。我在想
notebook是你的Notebook模型的FK,直到roller 发表评论。您需要做更多工作才能让我们回答您的问题。您是否创建了一个表单,用户可以在其中输入这些详细信息?