簡體   English   中英

django admin tabularinline限制外鍵選擇字段

[英]django admin tabularinline limit foreign key choice fields

我正在使用django admin表格內聯管理界面。

模型

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)

我想限制comment_owner僅在選擇字段中登錄用戶。 我也能夠做到這一點,但是我在這里面臨的問題是已經擁有comment_owner的評論,我想保持原樣。 在這里,具有comment_owner的注釋不會被預先選擇。

有點晚了,但是對任何人

您應該在admin.py中創建另一個Model Admin類,並為此對象授予權限。 我建議您更改類名。

class IssueCommentsInline(admin.TabularInline):
    ...

class IssueCommentsAdmin(admin.ModelAdmin):
     ...

admin.site.register(IssueComments,IssueCommentsAdmin)

這樣,您可以使用get_queryset編輯所有數據,並使用get_field_queryset編輯字段數據。

問候!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM