使用Django管理站点自动填充用户manytomanyfield

时间:2011-12-12 13:35:15

标签: django

我有一堂课,例如:

class Business(models.Model):
    users = models.ManyToManyField(User)
    business_name = models.CharField(max_length=100)

因此变量usersUse r相关联。我们假设在User中创建了5个用户:AdminTestTest1Test2Test3。所以只有Admin是所有用户的超级用户,让我们说我使用Test2登录。因此,当我点击保存时,manytomanyfield将自动保存为Test2,因此它会自动保存在request.user的任何人身上。

而且,有没有办法自动保存manytomanyfield中的所有用户?感谢。

1 个答案:

答案 0 :(得分:1)

您不需要为此使用JavaScript,如果要自动更新,您也不需要显示users的表单字段。您可以改为创建ModelAdmin子类并覆盖save_model method。例如:

在您应用的admin.py

from django.contrib import admin
from models import Business

class BusinessAdmin(admin.ModelAdmin):
    exclude = ["users"]

    def save_model(self, request, obj, form, change):
        if not obj.id: obj.save()
        obj.users.add(request.user)
        obj.save()
admin.site.register(Business, BusinessAdmin)