У меня есть 2 модели с отношением 1-1 (по существу, пул ресурсов). Для примера кода я просто буду использовать гайки и болты. Там будет намного больше гаек (доступных ресурсов), чем болтов (для каждого потребуется 1 гайка). Однако, если гайку можно назначить только одному болту.
Ограничение достаточно просто установить с помощью уникального именованного параметра True для метода ForeignKey.
Проблема возникает из ModelForm. При визуализации форма будет содержать каждый орех в выпадающем списке. Я хотел бы ограничить его показом только тех гаек, которые еще не были затянуты болтом.
Мне известен атрибут fields класса ModelForm, но я не могу найти фильтр набора запросов, который адекватно решает проблему. Вот пример кода моей проблемы:
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