【发布时间】:2014-09-22 10:40:13
【问题描述】:
我是 Django 新手,我创建了一个具有这种结构的项目:
模型.py
from django.contrib.auth.models import User, Group
class MyModel(models.Model):
created = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User, null=True, blank=True)
group = models.ForeignKey(Group, null=True, blank=True)
...
...
admin.py
class MyModelAdmin(admin.ModelAdmin):
form = MyModelForm
...
def queryset(self, request):
qs = super(MyModelAdmin, self).queryset(request)
# If super-user, show all records
if request.user.is_superuser:
return qs
# If user have group, show all records of the group
if request.user.groups.all().count() > 0:
return qs.filter(group=(request.user.groups.all()))
#Show only the records that the user have been created
return qs.filter(created_by=request.user)
我只想显示分配给特定组的记录。没关系,但是我如何创建与admin.py 中使用的过滤器相同的过滤器来过滤用户组在我的 Django 表单中的选择?如何将正在登录的实际用户传递到 ModelForm 类?
Forms.py
class MyModelForm(forms.ModelForm):
group = forms.ModelChoiceField(Group.objects.filter(id=####),
label=ugettext_lazy("Groups"), required=True)
谢谢!
【问题讨论】:
标签: python django django-forms django-admin