2010-09-06 2 views
0

У меня есть 2 простых форм/классов моделиДжанго форма: Уникальное поле

class Booking(forms.Form): 
    name = models.CharField(max_length=100, verbose_name="Your name*:") 
    place = models.ManyToManyField(Location, blank=True, null=True) 

class Location(models.Model): 
    place = models.CharField(max_length=100) 

Когда я показываю форму я только хочу, чтобы показать места не ранее уже определена. Сложный бит (я думаю) имеет место как ManytoManyField, поскольку я не могу добавить unique=True.

Так, например, пользователь x выберет из списка (Лондон, Кардифф или Эдинбург) и выберите Лондон. Когда пользователь y загружает форму, Лондон больше не будет доступен для выбора.

Любые идеи?

ответ

0

Как насчет управления этим на уровне модели? Добавьте BooleanField, называемый «inuse» или что-то подобное, в модель Location, а затем вы можете добавить фильтр в свою форму, который будет выбирать только те, которые не используются.

Вы бы переворачивать Inuse Истина, когда Пользователь х представляет свою форму ...

Кроме того, вы могли бы потенциально изменить отношение к ForeignKey, а затем вы можете использовать «уникальный»

+0

ничего себе не представляешь, как я будет делать это. Будет ли я фильтровать модель или представление? –

+0

Я сделал это ранее в представлении. У меня было поле в моей форме, называемое «тренером», и я хотел заполнить его раскрывающимся списком всех пользователей, которые были в группе пользователей «тренер», которую я создал. Что-то вроде этого: form.fields ['coach']. Queryset = User.objects.all(). Filter (groups__name = 'coach') – nstehr

Смежные вопросы