【发布时间】:2017-11-09 16:09:00
【问题描述】:
我想根据用户状态更改选择选项的标签。
我的模型是
class BookCategory(model):
label_1 = char
label_2 = char
def __unicode__(self):
#something here?
class Book(model):
name = char
categoey = models.Foreignkey(BookCategory)
BookCategory用于新书的createview,页面有modelform,book.name的textinput和book.catgory的choices。
我的目标是
如果用户类型==1:
=>显示类别的标签_1
如果用户类型==2:
=>显示类别的label_2
我知道“__unicode__”可以显示实例的值,但我想知道根据用户的状态改变它的字段。
有人知道解决办法吗?
添加: 我的 view 和 modelform 很简单。
视图是
class CreateBook(CreateView):
template_name = "template.html"
model = Book
form_class = BookForm
success_url = "success_url"
def form_valid(self, form):
if form.is_valid():
form.save()
形式是
class LessonForm(ModelForm):
class Meta:
model = Book
fields = ('name',
'category',
)
widgets = {
'name': forms.Textarea(attrs={'class': 'text_box'}),
'category': forms.Textinput(attrs={'class': 'select_box'}),
}
【问题讨论】:
-
您不能在
__unicode__方法中执行此操作,因为您无权访问request。如果你展示你的视图和表单,你也许可以改变它们来做你想做的事情。 -
@Alasdair 谢谢你的建议!我在我的帖子中添加了我的观点和形式。你能告诉我如何向他们传递“请求”吗?
标签: python django django-models django-forms