【发布时间】:2011-02-26 23:06:31
【问题描述】:
我正在尝试更改外键表单字段的默认值以设置其他模型的值取决于登录的用户时间>。 但我正在为此绞尽脑汁......
这个:Changing ForeignKey’s defaults in admin site 可以选择更改 empty_label,但我需要 default_value。
#Now I tried the following without errors but it didn't had the desired effect:
class EmployeeAdmin(admin.ModelAdmin):
...
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
formfields= super(EmployeeAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
if request.user.is_superuser:
return formfields
if db_field.name == "company":
#This is the RELEVANT LINE
kwargs["initial"] = request.user.default_company
return db_field.formfield(**kwargs)
admin.site.register(Employee, EmployeeAdmin)
##################################################################
# REMAINING Setups if someone would like to know it but i think
# irrelevant concerning the problem
##################################################################
from django.contrib.auth.models import User, UserManager
class CompanyUser(User):
...
objects = UserManager()
company = models.ManyToManyField(Company)
default_company= models.ForeignKey(Company, related_name='default_company')
#I registered the CompanyUser instead of the standard User,
# thats all up and working
...
class Employee(models.Model):
company = models.ForeignKey(Company)
...
提示:kwargs["default"] ... 不存在。
提前致谢,尼克
【问题讨论】:
标签: django django-models django-admin default-value foreign-keys