【问题标题】:No ForeignKey exception Django没有 ForeignKey 异常 Django
【发布时间】:2012-05-15 05:43:36
【问题描述】:

我们有这个模型,它对用户有一个外键:

class Medic(models.Model):
    user = models.ForeignKey(User)
    first_name = models.CharField(max_length=100, blank=True)
    middle_name = models.CharField(max_length=100, blank=True)
    last_name = models.CharField(max_length=100, blank=True)

在 admin.py 中,我们尝试将 Medic 页面上显示的已注册用户过滤为仅属于名为“staff”的组的用户:

from django.contrib import admin
from django.contrib.auth.models import User
from profiles.models import Medic

class StaffMed(admin.StackedInline):
    model = User
    def queryset(self, request):
        qs = super(StaffMed, self).queryset(request).filter(group__name='staff')
        return qs

class MedicAdmin(admin.ModelAdmin):
    inlines = [StaffMed]
    #model = Medic

admin.site.register(Medic, MedicAdmin)

然后我们得到这个异常:

class 'django.contrib.auth.models.User' has no foreignKey to class 'staff.models.Medic'

【问题讨论】:

    标签: django-models django-admin django-admin-filters


    【解决方案1】:

    您必须指定具有外键的模型:

    class StaffMed(admin.StackedInline):
        model = MedicAdmin
    

    那么你需要像这样过滤:

        def queryset(self, request):
             qs = super(StaffMed, self).queryset(request).filter(user.group__name='staff')
             return qs
    

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 2016-01-10
      • 1970-01-01
      • 2014-02-17
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      相关资源
      最近更新 更多