将选择限制为外键

时间:2019-07-05 02:36:29

标签: django django-models

我有一个具有自相关关系外键和外键的模型,我想使用limit_choices_to = self.parent = parent。但是它不起作用,我尝试了不同的方法,但是没有任何作用

我想在这里限制选择

    next_level = models.ForeignKey('flow.State', 
                                    on_delete=models.CASCADE, 
                                    related_name='get_next_level', 
                                    blank=True, 
                                    null=True, 
                                    limit_choices_to=(Q(workflow_id=workflow)))

这是我的整个模特

class State(models.Model):
    workflow = models.ForeignKey(Workflow, on_delete=models.CASCADE, null=True, blank=True)
    level = models.IntegerField()
    name = models.CharField(max_length=100)
    next_level = models.ForeignKey('flow.State', on_delete=models.CASCADE, related_name='get_next_level', blank=True, null=True, limit_choices_to=(Q(workflow_id=workflow)))
    return_level = models.ForeignKey('flow.State', on_delete=models.CASCADE, related_name='get_return_level', blank=True, null=True)
    approver = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)

1 个答案:

答案 0 :(得分:0)

据我了解,您有一个a = pd.Series(pd.factorize(df['A'])[0]) b = pd.Series(pd.factorize(df['B'])[0]) df_mask=pd.DataFrame({ 'A':np.where(a != -1, 'A' + a.astype(str), ''), 'B':np.where(b != -1, 'B' + b.astype(str), ''), 'C':df['C'].values, }) print (df_mask) A B C 0 A0 B0 3.43 1 A0 11.44 2 A1 B1 21.23 3 A2 44.22 4 A3 B1 2.12 5 A3 32.43 6 A4 B0 324.78 7 A0 -6432.93 对象,并且您正在尝试访问Workflow。您可以简单地将反向关系参数next_level传递到related_name=get_state模型中的workflow ForeignKey字段。这样,您可以访问State模型的next_level,例如:

Workflow