考虑我的models.py
,
PowerPolicy :
class PowerPolicy(models.Model):
name = models.CharField(max_length=15)
...
组:
class Group(models.Model):
name = models.CharField(max_length=15)
#But then,we also have:
power_policies = models.ManytoManyField(PowerPolicy)
播放器:
class Player(models.Model):
name = models.CharField(max_length=15)
group = models.ForeignKey(Group,on_delete=models.CASCADE)
...
然后另一个模型叫做
UsePower :
class UserPower(models.Model):
player = models.ForeignKey(Player,on_delete=models.CASCADE)
power_policy = models.ForeignKey(PowerPolicy,on_delete=models.CASCADE)
...
但是!这很重要:我要做到这一点,以便我的超级用户 (请注意,我的超级用户不是玩家,他只是超级用户)只能创建UsePower
的{{1}}中指定的Power
个对象的Player
对象。现在,我确实知道我必须创建一个自定义表单并覆盖返回的Group
字段的queryset,即通过函数根据我的需要我的自定义查询集。
-看起来像这样:
power_policy
然后通过以下操作在管理网站上使用它:
class UsePowerForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(UsePowerForm,self).__init__(*args,**kwargs)
def MyCustomFunctionThatReturnsTheQuerySet():
This function returns the Power policies that are allowed to the player in
their player Group. The only problem is,Our little function here doesn't know how to get the player chosen.
could you help
return TheQuerySet
self.fields['power_policy'].queryset = MyCustomFunctionThatReturnsTheQuerySet()
我真的希望这很有意义,你们可以帮助我。
谢谢您的阅读,老实说,我对此表示感谢。
编辑:对我来说,无法使用表单清理或在保存过程中进行验证:(