【发布时间】:2021-12-23 05:37:29
【问题描述】:
我是 django 的新手,但仍在尝试找出基本的东西。 我有三种型号:pc、pcslot 和 card。 pcslot 包含与插槽和 pc 的关系。一台电脑可以有多个插槽,每张卡只能在一个插槽中。
class pcslot(models.Model):
card = models.OneToOneField("card
on_delete=models.SET_NULL,
null=True,
blank=True
)
computer = models.ForeignKey('pc',
on_delete=models.CASCADE,
related_name='slots',
editable=False
)
现在我想从表单下拉列表中排除所有已分配的卡片。我试图通过将其添加到模型中来过滤表单内的对象
def get_related(self):
if(hasattr(self, 'pcslot')):
return 1
return None
但是 django 对象过滤器无法访问这些方法,所以 filter(get_related=1) 不起作用:
类 pcslotForm(ModelForm): 元类: 型号 = pcslot fields = "全部" def init(self, user=None, **kwargs): super(pcslotForm, self).init(**kwargs) self.fields['card'].queryset = card.objects.filter(get_related=1)
最好的方法是什么?我是否必须遍历所有对象并进行比较,或者是否有我还不知道的内置方法? 谢谢
【问题讨论】:
标签: django forms relationship