【问题标题】:Django ManyToManyField relationshipDjango ManyToManyField 关系
【发布时间】:2011-12-24 08:23:27
【问题描述】:

我有以下 Django 模型:

class opetest(models.Model):
    name = models.CharField(max_length=200)
    people = models.ManyToManyField(User, blank=True)

这种 m2m 关系在用户对象上作为“opetest_set”可用。 如何在 django admin '用户编辑页面' 中编辑这种 m2m 关系?

【问题讨论】:

    标签: django django-admin many-to-many django-orm


    【解决方案1】:

    要在 Django 管理员中编辑 m2m,请使用 InlineModelAdmin。要使用您自己的UserAdmin,您应该先注销User,如下所示:

    admin.site.unregister(User)
    admin.site.register(User, UserAdmin)
    

    要使opetest 可以从User 实例访问:

    class opetest(models.Model):
        name = models.CharField(max_length=200)
        people = models.ManyToManyField(User, blank=True, related_name='opetests')
    

    然后user.opetests.all()

    【讨论】:

    • 我只在 opetest 模型中声明了 m2m 字段,但没有扩展 User 模型。那么如何通过 User 模型访问这种 m2m 关系呢?
    • >>> from django.contrib.auth.models import User >>> a = User >>> a.opetests.all() Traceback(最近一次调用最后):文件“ ",第 1 行,在 AttributeError: 'ManyRelatedObjectsDescriptor' 对象没有属性 'all' 它不起作用。
    • @baobee a 来自哪里?是User 实例吗?或者你只是给它分配User 类?
    • 这是我的错误。但我也得到一个错误: >>> a = User.objects.filter(username = 'admin') >>> a.opetests.all() Traceback (last recent call last): File "", line 1、在 AttributeError: 'QuerySet' object has no attribute 'opetests'
    • @baobee a = User.objects.get(username='admin')
    猜你喜欢
    • 2014-12-04
    • 1970-01-01
    • 2012-01-12
    • 2010-09-14
    • 2014-02-28
    • 2021-03-19
    • 2010-12-01
    • 2016-01-12
    • 2012-12-11
    相关资源
    最近更新 更多