Изменить и ограничить выбор поля ForeignKey в форме
Я пытаюсь контролировать выбор ForeignKey в форме.
Я хочу иметь возможность контролировать отображаемое имя в форме и какие параметры доступны.
Мне удалось ограничить выбор, но я не могу понять, как изменить отображаемое имя:
Модель:
from django.db import models
# Create your models here.
class Group(models.Model):
created_by = models.ForeignKey('auth.User', on_delete=models.PROTECT, related_name='group_author')
last_edited_by = models.ForeignKey('auth.User', on_delete=models.PROTECT, related_name='group_editor')
name_de = models.CharField(max_length = 100, unique=True)
name_en = models.CharField(max_length = 100, unique=True)
privacy = models.ForeignKey('auth.Group', on_delete=models.PROTECT, blank=True, null=True)
def __str__(self):
return str(self.name_de) + '/' + (self.name_en)
Форма:
from django import forms
from .models import *
class GroupForm(forms.ModelForm):
class Meta:
model = Group
exclude = ('created_by', 'last_edited_by',)
Вид:
from django.contrib.auth.models import Group as DjangoGroup
from django.db.models import Q
from django.shortcuts import render
from .forms import *
from .models import *
def category_new(request):
context = {}
if request.method == 'POST':
form = GroupForm(request.POST)
if form.is_valid():
group = form.save(commit=False)
group.created_by = request.user
group.last_edited_by = request.user
group.save()
return redirect('index')
else:
context['form'] = form
else:
form = GroupForm()
privacyOptions = DjangoGroup.objects.filter(Q(name='Privacy - Private') | Q(name='Privacy - Submods'))
form.fields['privacy'].queryset = privacyOptions
context['form'] = form
return render(request, 'new_category.html', context)
Теперь это работает так, что отображаемые формы отображают только две группы, которые я хочу, чтобы они отображались, но я бы хотел, чтобы они отображались просто как "Личные" и "Только подмодели".
Пожалуйста, дайте мне знать, если нужна дополнительная информация.
Заранее спасибо за любую помощь или предложения.