Вы можете ограничить выбор с помощью limit_choices_to=…
[Django -doc] . Но, вероятно, вам нужен ForeignKey
, так как в противном случае каждый Event
может иметь большинство один связанный EventVisitor
(a OneToOneField
в основном ForeignKey
с ограничением unique=True
).
class Eventvisitor(models.Model):
event = models.ForeignKey(
Event,
<b>limit_choices_to={'active': True}</b>,
on_delete=models.CASCADE,
related_name='eventvistors'
)
name = models.CharField(max_length=50)
email = models.CharField(max_length=70, default="")
phone = models.CharField(max_length=20,default="")
date = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-date']
def __str__(self):
return self.email
Обратите внимание, что, хотя можно выбрать только Event
s с помощью active=True
, если вы позже установите для поля .active
значение False
, элементы все равно будут ссылаться на него, поскольку отношение не применяется на уровне базы данных.