如何在django中创建模型字段的动态选择

时间:2012-12-03 13:21:53

标签: python django

class Task(models.Model):

    owner_set=set()
    for each in User.objects.all():
         owner_set.add((each.username,each.username))

    Owner = models.CharField(max_length=100,choices=owner_set)

在代码中,我通过User的选择创建一个字段,但这会导致一个问题: 当我创建新用户时,新用户名将不会在“所有者”字段中显示; 我需要重启服务器。所以我希望所有者归档应该是动态的,有没有办法做到这一点?

我不想使用Owner= models.ForeignKey(User,...),因为我可能会使用不仅来自auth_user的名称。

1 个答案:

答案 0 :(得分:1)

为什么要将所有者存储为CharField?如果它是对User对象的引用,则它应该是ForeignKey。

评论后修改您的数据模型似乎已损坏。然而,如果你真的想把它保存为CharField,你就不应该尝试在模型中设置选择。定义自定义表单,并使用ModelChoiceField或在表单的__init__方法中设置选项。