2011-12-12 72 views
0

我有一类企业,例如:自动填充用户manytomanyfield与Django管理站点

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

所以变量usersUse电路接入。我们假设在User中有5个用户被创建:Admin,Test,Test1,Test2Test3。所以只有Admin是所有用户的超级用户,假设我使用Test2登录。所以当我点击保存时,这个多人字段会自动保存为Test2,所以它就像自动保存在request.user的人那样。

还有,有办法自动保存所有用户在manytomanyfield?谢谢。

+0

看的admin.py在这个[应用](https://github.com/Zapix/whovedonethis)。它为此功能提供[mixins](https://github.com/Zapix/whovedonethis/blob/master/whovedonethis/models.py)。 – DrTyrsa

+0

这只是一个外国人@DrTyrsa。我已经使用外键代码进行了测试,但不起作用。 – david

+0

好的克里斯。抱歉。 – david

回答

1

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

在你的应用程序

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) 
+0

Simon Kagwi,是否还有一种方法可以自动保存所有用户?感谢您的帮助。 :D – david

+0

请详细说明您的意思是“自动保存所有用户”。如果您正在讨论将每个'Business'实例与所有'Users'关联起来,那么首先不需要'用户'字段。 –

+0

嗯。例如,如果超级用户创建了一个业务,并且应该自动过滤到所有非超级用户。 – david