Python django管理列表行限制外键选择字段
我正在使用django管理表格内联管理界面 model.pyPython django管理列表行限制外键选择字段,python,django,django-admin,django-admin-filters,Python,Django,Django Admin,Django Admin Filters,我正在使用django管理表格内联管理界面 model.py class Issues(TimeStampedModel): issue_owner = models.ForeignKey(USER_MODEL, related_name='issue_owner') issue_no = models.CharField(max_length = 500, null = True, blank = True) class IssueComments(TimeStampedMo
class Issues(TimeStampedModel):
issue_owner = models.ForeignKey(USER_MODEL, related_name='issue_owner')
issue_no = models.CharField(max_length = 500, null = True, blank = True)
class IssueComments(TimeStampedModel):
comment_owner = models.ForeignKey(USER_MODEL, related_name='comment_owner')
issue = models.ForeignKey(Issues, null=True, blank=True)
comment = models.TextField(null=True, blank=True)
我试图在管理中使用表格内联
管理员
class IssueCommentsAdmin(admin.TabularInline):
model = IssueComments
extra = 1
def formfield_for_foreignkey(self, db_field, request=None,**kwargs):
field = super(IssueCommentsAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
if db_field.name == 'comment_owner':
if request.user is not None:
field.queryset = field.queryset.filter(username = request.user.username)
if not field.queryset:
field.queryset = field.queryset.all()
else:
field.queryset = field.queryset.none()
return field
class IssuesAdmin(admin.ModelAdmin):
model = Issues
list_display = ('issue_no', 'title', 'owner_phone_number', 'status', 'issue_priority', 'classification')
inlines = [ IssueCommentsAdmin ]
def render_change_form(self, request, context, *args, **kwargs):
context['adminform'].form.fields['assigned_to_user'].queryset = User.objects.filter(is_staff=True)
return super(IssuesAdmin, self).render_change_form(request, context, args, kwargs)
我想将注释所有者限制为仅在选择字段中登录的用户。我也能做到这一点,但我在这里面临的问题是评论,而我已经有了评论所有者,我想保持原样。
这里有评论的评论不是预先选择的。有点晚了,但对任何人来说 您应该在Admin.py中创建另一个模型管理员类,并授予此对象的权限。我建议你改变你的类名
class IssueCommentsInline(admin.TabularInline):
...
class IssueCommentsAdmin(admin.ModelAdmin):
...
admin.site.register(IssueComments,IssueCommentsAdmin)
通过这种方式,您可以使用get_queryset编辑所有数据,使用get_field_queryset编辑字段数据
问候 请显示错误,谢谢没有收到任何错误,但是注释所有者已为其分配了注释所有者。请确定:field.queryset.filter(username=request.user.username)可能:qs=super(IssueCommentsAdmin,self)。get\u queryset(request)返回qs.filter(issue\u owner=request.user.id)