我有2个1-1关系模型(本质上是一个资源池)。对于示例代码,我将简单地使用螺母和螺栓。螺母(可用资源)比螺栓(每个螺栓需要1个螺母)多得多。但是,如果一个螺母只能指定给一个螺栓。在
约束很容易设置为ForeignKey方法的unique=True命名参数。在
问题来自于模型表单。呈现时,表单将在下拉列表中包含每个螺母。我想限制它只显示那些还没有被螺栓咬过的坚果。在
但我不能充分地意识到属性设置的问题。下面是我的问题的示例代码:
from django.db import models
from django.forms import ModelForm
# Create your models here.
class Nut(models.Model):
size = models.CharField()
class Bolt(models.Model):
size = models.CharField()
nut = models.ForeignKey( Nut, unique=True )
class BoltForm(ModelForm):
def __init__(self, *args, **kwargs):
super(BoltForm, self).__init__(*args, **kwargs)
self.fields['nut'].queryset = # All unassigned nuts
试试这个:
更新:
生成同一sql查询的三个表达式:
^{pr2}$我选择最后一个作为最直接的(尽管在另外两个例子中list和dict实际上并没有被创建:django“理解”了意图,没有明确提到
.query
)另外,考虑一下丹尼尔·罗斯曼的回答。这是做同样事情的另一种方法。在
相关问题 更多 >
编程相关推荐