【发布时间】:2016-10-08 05:56:30
【问题描述】:
我已导入 django smart select 并有一个名为 Request 的模型,其中字段 assigned_to 和 approval_by 应该有动态选择。makemigrations 或 migrate 没有错误,但动态选择下拉列表不是t 为assigned_to 工作。事实上,assigned_to 的下拉列表没有显示任何选择。可能是什么原因?
这里是models.py:
from smart_selects.db_fields import ChainedForeignKey
class Department(models.Model):
department_name = models.CharField(max_length=20)
def __str__(self):
return self.department_name
class UserProfile(models.Model):
user = models.OneToOneField(User)
user_department = models.ForeignKey("Department")
def __str__(self):
return self.user.username
class SuperUser(models.Model):
superuser = models.OneToOneField(User,limit_choices_to={'is_superuser':True},unique=True)
head_department = models.ForeignKey("Department")
def __str__(self):
return self.superuser.username
class Request(models.Model):
# user = models.ForeignKey(User,null=True,related_name="user")
department = models.ForeignKey("Department")
request_type = models.CharField(max_length=20,choices=typechoices)
priority=models.CharField(max_length=20,choices=prioritychoices)
description = models.TextField()
sample = models.FileField(storage=fs,blank=True,null=True)
approval_flag = models.BooleanField(default=False)
status = models.CharField(max_length=20,choices=statuschoices,default='pending')
created=models.DateTimeField(auto_now_add=True,null=True)
modified = models.DateTimeField(auto_now=True)
assigned_to = ChainedForeignKey(UserProfile,blank=True,null=True,chained_field="department",chained_model_field="user_department",show_all=False)
approval_by = ChainedForeignKey(SuperUser,related_name="apprby",blank=True,null=True,chained_field="department",chained_model_field="head_department",show_all=False)
def __str__(self):
return str(self.id)
【问题讨论】:
-
我也更改了属性 show_all = True 但它仍然显示空下拉列表。可能是问题,即使是另一个部门也没有显示单一选择
-
尝试-models.ForeignKey(部门)
-
在获取外键时给出引号是否重要
-
有没有其他方法可以提供动态选择,Django_smart_select 很烂。为什么要创建这样不起作用的插件
-
@MrinalMahajan:Here's the documentation for django-smart-selects。我不会猜测您希望您的 ChainedForeignKey 字段如何工作,但我怀疑如果您遵循记录的用法,您会取得更大的成功。